【问题标题】:Navigation controller with tab bar controller?带有标签栏控制器的导航控制器?
【发布时间】:2016-11-08 00:24:32
【问题描述】:

我的标签栏控制器中嵌入了一个 tableViewController。当一个单元被点击时,一个 segue 被启动到另一个视图控制器以显示该对象的详细信息。但是,后退按钮未出现在 viewDetail 中。我尝试将视图嵌入到单独的导航控制器中,但这并没有改变任何东西。我究竟做错了什么?我目前有 Tab Bar Controller -> tableView -> Navigation Controller -> viewDetail(此处需要返回按钮才能返回 tableView)。

这是我现在拥有的:

谢谢!!

【问题讨论】:

  • 不,你应该做tabbar->navigation controller->tableview->detail view
  • 你只是组织错了。目前你有标签栏控制器 -> tableView -> 导航控制器 -> viewDetail。它应该是 Tab Bar -> tableview。表格视图单元格-> 查看详细信息。导航应该单独指向表格视图。没有什么应该指向导航。它应该只指向 tableview

标签: ios swift uitableview uinavigationcontroller uitabbarcontroller


【解决方案1】:

UITabBarController 中的每个 UIViewController 都可以在您方便的时候嵌入到 UINavigationController 中,这样您就可以使用您需要的所有功能。

基本上,你需要选择tableViewController,点击Editor菜单项,选择Embed in然后点击Navigation Controller,ta daa。

您可以使用Interface Builder 或以编程方式在您的详细视图控制器中显示或隐藏Navigation Bar,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBarHidden = true
    // Do stuff
}

【讨论】:

  • 这种方式应该通用吗?
  • 栏可见性选项对于在以下控制器上禁用它非常有用。谢谢。此选项在 Xcode 9 上的“属性检查器”选项卡上称为 Hide Bottom Bar on Push
【解决方案2】:

将 NavigationController 设置为 TabBarController,然后将 NavigationController 的 rootViewController 设置为 TableViewController。

【讨论】:

    【解决方案3】:

    你只是组织错了。目前你有标签栏控制器 - > tableView - > 导航控制器 - > viewDetail。它应该是 Tab Bar -> tableview -> 查看详细信息。导航应该单独指向表格视图。没有什么应该指向导航。它应该只指向 tableview

    它应该看起来像上图

    【讨论】:

    • 我认为这是一个非常好的解决方案。我怀疑它是否会起作用,但只是尝试仅从代码中做同样的事情,它就像一个魅力。这是完美的,因为它不需要任何额外的“显示/隐藏”导航栏或标签栏。很好的答案!
    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2017-01-17
    相关资源
    最近更新 更多