带有标签栏控制器的导航控制器?

5
我有一个嵌入在选项卡控制器中的表视图控制器。当单元格被点击时,会启动一个segue到另一个视图控制器以显示该对象的详细信息。然而,在viewDetail中没有出现返回按钮。我尝试将视图嵌入到单独的导航控制器中,但这并没有改变任何事情。我做错了什么?我目前有Tab Bar Controller -> tableView -> Navigation Controller -> viewDetail(需要在此处返回tableView的Back按钮)。
这是我目前拥有的:

enter image description here

谢谢!!


不,你应该使用TabBar->导航控制器->表视图->详细视图。 - Surely
你的组织结构有误。当前的结构是 Tab Bar Controller -> tableView -> Navigation Controller -> viewDetail。正确的结构应该是 Tab Bar -> tableview。Tableview cell 应该指向 View detail。Navigation 应该单独指向 tableview,没有任何指向 navigation 的链接,只需指向 tableview 即可。 - Ryan Tobin
3个回答

19
每个UITabBarController中的UIViewController可根据您的需要嵌入UINavigationController,这样您就可以使用所需的所有功能。
基本上,您需要选择tableViewController,单击Editor菜单项,选择Embed in,然后单击Navigation Controller,就完成了。

UINavigationController Example

你可以使用 Interface Builder 或在你的详情视图控制器中以编程方式按如下方式显示或隐藏 导航栏
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBarHidden = true
    // Do stuff
}

这种方法通常应该被使用吗? - Surjeet Rajput
底部栏可见性选项非常有用,可以在以下控制器上禁用它。感谢。 此选项在Xcode 9的属性检查器选项卡中称为“推送时隐藏底部栏”。 - Isaac Bosca

4

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

enter image description here


2
您的结构不对。当前的结构是Tab Bar Controller -> tableView -> Navigation Controller -> viewDetail。应该调整为Tab Bar -> tableview -> View detail。Navigation应该单独指向table view,不应该有任何指向navigation的内容,只需要指向table view即可。

enter image description here

它应该看起来像上面的图片一样。

这是一个非常好的解决方案,我认为。我曾经怀疑它是否有效,但只是从代码中尝试了同样的方法,结果非常完美。它的完美之处在于不需要任何额外的“显示/隐藏”导航栏或选项卡栏。 很棒的答案! - roxanneM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接