2016-11-08 69 views
0

我想要巧妙地设置UINavigationController中“后退”按钮的所有title属性,以便我不必在任何地方执行self.navigationController.navigationBar.backButtonItem.title = "Back"或将子类别UINavigationController设置为无处不在,所以我创建了这个扩展:在UINavigationController中设置所有后退按钮标题

extension UINavigationItem { 
    open var backBarButtonItem: UIBarButtonItem? { 
     get { 
      return self.backBarButtonItem 
     } 

     set { 
      newValue?.title = "Back" 
      backBarButtonItem = newValue? 
     } 
    } 
} 

但它说'backBarButtonItem' used within its own type

以前有没有人做过这件事,或者可以想办法让它工作?

回答

1

您会收到此错误消息,因为您无法创建名称与SDK中定义的变量类似的变量。

不能覆盖现有的功能

像你的情况是将其命名为backBarButtonTitle由于它采用的是苹果

doc提到这 UINavigationBarUIKit

被定义为open var backBarButtonItem: UIBarButtonItem?

扩展可以向某个类型添加新功能,但它们不能覆盖现有功能 。

+0

这是因为我想尝试覆盖已经存在的backBarButtonItem,并在设置之前更改标题 - 这是不可能在扩展?只在一个子类中? –

+0

@ChrisByatt您无法用扩展名覆盖现有功能,更新了我的答案。 – Rajat

-2

请按照此屏幕截图然后运行您的项目。我认为你可以很容易地解决你的问题:) enter image description here

相关问题