【发布时间】:2014-06-11 14:34:57
【问题描述】:
如何从导航控制器而不是视图控制器设置右栏按钮?
我一直在阅读有关编写 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。如果我将其设置为 nil,则不会显示任何内容。所以我可能需要改变它。尚不确定如何。
【问题讨论】:
-
您为此创建了一个 UINavigationController 子类?左右 BarButtons 是控制器 navigationItem 的属性,而不是 navigationController。 viewControllers 堆栈中的每个 viewController 都有自己的 navigationItem。我不确定你想做什么是可能的,但我会调查一下。
-
@pedros 看看我的编辑。
-
您为什么要这样做?很奇怪的问题。
-
我把它写成对 Fogmeister 回答的评论。