如何从导航控制器而不是视图控制器设置正确的bar按钮?从导航控制器设置rightBarButtonItem
我一直在阅读有关编写SOLID视图控制器,它只能作为控制器使用,而不是将所有内容都添加到它们中。
该帖子建议移动视图控制器之外的导航逻辑(我同意)。另外,视图控制器真的不应该设置它嵌入到的导航控制器,所以我试图将设置导航栏的代码移动到我的自定义UINavigationController类。
我是部分成功的,我设法更新颜色,但无法设置rightBarButtonItem
。
将这些行添加到视图控制器将工作,但我想从UINavigationController的子类。
let settingsImage = UIImage(named: "settingsButton")
self.rightBarButton = UIBarButtonItem(image: settingsImage, style: UIBarButtonItemStyle.Plain, target: self, action: "showSettings")
self.navigationItem.rightBarButtonItem = self.rightBarButton;
我已经看了这表明创建父视图控制器和继承从所有视图控制器的问题“默认导航按钮”,但我真的不喜欢的事实,即视图控制器设置导航控制器。它应该是相反的。
编辑:我得到了远达self.navigationBar.items
。如果我将其设置为零,则不会显示任何内容。所以我可能需要改变它。还不确定如何。
您创建一个UINavigationController子类,这样做?左右BarButton是控制器navigationItem的属性,而不是navigationController。viewControllers堆栈中的每个viewController都有自己的navigationItem。我不确定你想要做什么是可能的,但我会研究它。 – pedros
@pedros看看我的编辑。 –
你为什么要这样做?非常奇怪的问题。 – Fogmeister