将 Seques 与 UINavigationController 相结合
Combine Seques with UINavigationController
我正在构建一个显示来自多个 API 的统计信息的移动应用程序。
该应用程序根据处于活动状态的 API 显示不同的值。在运行时,用户可以 select 显示哪个 API 的值。但是,这些值始终显示在同一个 Target 视图控制器中。
UINavigationController 正在使用中,即使 UITableViewControllers 支持导航栏,我也希望尽可能将其用于导航和导航 UI。
请看问题末尾的故事板设计图
环境: iOS 9/Swift 2.2/XCode 7
在运行时,用户将从 Select 控制器中 select 选择视图控制器。 通过 "Done" UIBarButton 从其中一个 Choice 视图控制器转至目标控制器 的合适方法是什么? Target 控制器不变。
我必须以编程方式为 "Done" 为嵌入 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)
}
}
return 到根视图控制器的正确方法是:
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)
}
}
}
您确实需要以编程方式添加 "done" 按钮;但它比那更简单。只是 select 你的根视图控制器,以及 copy/past 情节提要中的 class。使用您的 segues 将正确的视图推送到 UINavigation 堆栈。
我正在构建一个显示来自多个 API 的统计信息的移动应用程序。 该应用程序根据处于活动状态的 API 显示不同的值。在运行时,用户可以 select 显示哪个 API 的值。但是,这些值始终显示在同一个 Target 视图控制器中。
UINavigationController 正在使用中,即使 UITableViewControllers 支持导航栏,我也希望尽可能将其用于导航和导航 UI。
请看问题末尾的故事板设计图
环境: iOS 9/Swift 2.2/XCode 7
在运行时,用户将从 Select 控制器中 select 选择视图控制器。 通过 "Done" UIBarButton 从其中一个 Choice 视图控制器转至目标控制器 的合适方法是什么? Target 控制器不变。
我必须以编程方式为 "Done" 为嵌入 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) } }
return 到根视图控制器的正确方法是:
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)
}
}
}
您确实需要以编程方式添加 "done" 按钮;但它比那更简单。只是 select 你的根视图控制器,以及 copy/past 情节提要中的 class。使用您的 segues 将正确的视图推送到 UINavigation 堆栈。