我正在构建一个显示来自多个API的统计信息的移动应用。 该应用根据活动的API显示不同的值。在运行时,用户可以选择显示值的API。但是,值始终显示在同一目标视图控制器中。
UINavigationController正在使用中,如果可能的话,我想推荐用于导航和导航UI,即使UITableViewControllers支持导航栏。
请在问题末尾查看故事板设计图片。
环境: iOS 9 / Swift 2.2 / XCode 7
在运行时,用户将从Select控制器中选择Choice视图控制器。 通过"完成"从一个选择视图控制器中切换的适当方法是什么? UIBarButton,目标控制器?目标控制器不会改变。
我必须以编程方式将正确的栏按钮定义为"完成"对于嵌入在UINavigationController中的每个控制器?
class UIViewController: UITableViewController {
override func viewWillAppear( animated: Bool) {
super.viewWillAppear( animated)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: nil)
}
}
答案 0 :(得分:1)
返回根视图控制器的正确方法是:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(MyViewController.done))
}
func done() {
if let navigationController = self.navigationController {
navigationController.popToRootViewController(animated: true)
}
}
}
您需要以编程方式添加“完成”按钮;但它比这更简单。只需选择您的根视图控制器,然后在故事板中复制/通过该类。使用segues将正确的视图推送到UINavigation堆栈。