我尝试使用以下简单的工作流程构建一个相当简单的电话簿应用程序:FirstViewController
- > SecondViewController
- > ThirdViewController
等。
我的理解是UINavigationController
正是处理此类工作流程的人。所以,我在FirstViewController
中嵌入NavigationController
并在控制器之间添加了segue。到目前为止一切都很好。
我的问题是让每个控制器上的导航栏都有一个不同的右键(例如,详细视图会有一个"编辑"右键,编辑视图会有一个"保存"一个,等等。)我只能在FirstViewController
(通过Xcode)添加右键,因为这个VC获得了导航项(当它嵌入到导航控制器中时)。后续风险投资人员没有这样的导航项目,即使他们获得带有"返回"的导航栏。按钮,我找不到一种方法(在Xcode中)添加一个右键。
为每个后续视图控制器添加此类右键(通过Xcode或以编程方式)的推荐方法是什么?
答案 0 :(得分:0)
如果您想以编程方式执行此操作,可以直接从它们为每个UIViewController自定义NavigationBar内容。为此,您必须从navigationItem
属性中设置这些元素。
您可以通过它设置多个元素,包括但不限于rightBarButtonItems
和leftBarButtonItems
。
将UIViewController推送到UINavigationController堆栈后,这些设置将用于自定义导航栏外观。
有关详细信息,请查看UINavigationItem文档
修改:这里有一个很好的解释,说明如何只从故事板https://www.andrewcbancroft.com/2016/04/14/adding-buttons-to-the-navigation-bar-with-storyboards/获得你想要的东西
答案 1 :(得分:0)
答案 2 :(得分:0)
这有点棘手。首先,您必须将导航项添加到第二个和第三个视图控制器。它在库中看起来像这样:
只需将其拖到第二个视图控制器上,然后再拖到第三个视图控制器上。
现在您将能够向第二个和第三个视图控制器添加一个正确的条形按钮项,就像您对第一个视图控制器所做的那样。
答案 3 :(得分:0)
在每个视图控制器中编写此方法,并从viewDidLoad
中调用它 func customizeRightBarButton() {
let rightBarButtonImage: UIImage = UIImage(named: "customImage")
let rightBarButton: UIButton = UIButton(type: .Custom)
rightBarButton.setImage(rightBarButtonImage, forState: .Normal)
rightBarButton.frame = CGRectMake(0, 0, 23, 23)
let barButtonItem: UIBarButtonItem = UIBarButtonItem(customView: rightBarButton)
rightBarButton.addTarget(self, action: #selector(ViewController.rightButtonClicked(_:)), forControlEvents: .TouchUpInside)
self.navigationItem.rightBarButtonItem = rightBarButton
}
如果您想隐藏条形按钮,请使用
self.navigationItem.hidesBackButton = true
self.navigationItem.setHidesBackButton(true, animated: true)
答案 4 :(得分:0)
我找到了一种简单的方法。
let barButton = UIBarButtonItem(image: UIImage(named: "YourImage"), style: .plain, target: self, action: #selector(yourClass.yourFunction(_:)))
self.navigationController?.topViewController?.navigationItem.rightBarButtonItem = barButton
添加此代码以及您想要在后退按钮旁边添加右键的所有视图控制器。
我希望这段代码可以帮到你!