Swift - 如何为每个视图设置不同的导航栏?

3 navbar ios swift

在此处输入图像描述我在不同视图上显示不同的导航栏按钮时遇到问题.

我有一个父视图导航控制器和3个子视图.我想要做的是在每个子视图上有不同的导航栏按钮,而不仅仅是我通过在主故事板上添加它们可以实现的相同2.

我附上了两个截图,以便您可以看到我的故事板和代码的样子.

所以基本上我正在寻找一些代码来在每个视图上单独添加条形项.[![在此处输入图片说明] [2]] [2] 在此输入图像描述

Pey*_*man 5

在每个视图控制器中,您可以使用self.navigationItem单独进行这些更改.

例如,假设您有一个视图控制器名称"VC1",并且您希望在导航栏中有一个添加按钮.在VC1中,覆盖viewDidLoad并执行以下操作:

override func viewDidLoad() {
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "addFunc")
}
Run Code Online (Sandbox Code Playgroud)

更新: 所以,看看你的教程,我意识到你没有将子视图控制器推送到导航控制器,你只是将它们作为孩子添加.它们是有区别的.每个导航控制器都有一组视图控制器(你可以访问它:navController.viewControllers)

您可以添加子视图控制器,但它与其他控制器没有任何不同,如果您想要实际使用导航控制器,则需要将它们推送到导航控制器.否则,您无法访问navigationItem或类似的功能.

不要将视图控制器添加到滚动视图,而是使用:

self.pushViewController(childViewController1, animated: true)
Run Code Online (Sandbox Code Playgroud)

如果您绝对希望在滚动视图中拥有它并为每个视图控制器设置不同的导航栏按钮,则必须自己实现此机制.例如,看看这个:

https://github.com/peymanmortazavi/UISwipeViewController

它没有被抛光,你必须正确地实现布局约束,但它证明了我的意思.