为什么标签栏消失了?

Why is the tab bar disappearing?

我当前的视图控制器设置是: 选项卡视图 > 导航控制器 > table 视图控制器 > 导航视图控制器 > 单元格详细信息。请参见 The current setup of viewcontrollers

我曾经有过: 选项卡视图 > 导航控制器 > table 视图控制器 > 单元格详细信息 然后一切都很好。

问题是我需要在用户按下后退按钮时发生自定义操作,为此我在 "table view" 和 "cell details" 之间添加了一个导航控制器。那就是标签栏消失的时候。我知道这似乎是 "normal" 行为,但这对我帮助不大。请帮忙

连接到详细视图控制器的代码。 (我用的是故事板,所以这些东西的代码要轻一点)

@IBAction func add(sender: AnyObject) {
    dispatch_async(dispatch_get_main_queue()) {
        self.performSegueWithIdentifier("TableViewToDetailView",    sender: self)
    }

hideTabBarOnPush 属性 为真(在代码中)或在您推送的控制器的故事板上检查 Hide Bottom Bar on Push 时,就会发生这种情况。

我遇到了一个类似的问题,虽然可能与你的不太一样,但希望它能有所帮助。当视图控制器 A 呈现视图控制器 B 时,B 的 hidesBottomBarWhenPushed 属性 可能会被 A 的 hidesBottomBarWhenPushed 属性 覆盖。我通过设置 B 的模态样式修复了它。

我遇到了类似的问题,很难问出正确的问题。将 Tsb Bar Controllers 与 Navigation Controllers 和 View Controllers os 一起使用太棘手,某些事情是不允许的,并且有很多术语,而且,有许多不同类型的 segues,并且有许多不同种类的后果为了做某些事情。

我在这两个部分系列的第二部分中找到了正确的程序(答案):

  1. Storyboards Tutorial for iOS: Part 1
  2. Storyboards Tutorial for iOS: Part 2

程序总结: 将源视图控制器和目标视图控制器嵌入到导航控制器中,然后在源视图控制器中创建展开转场(带有签名 @IBAction func methodname(_ segue:) 的方法)。然后,从目标视图控制器,control-click 从导航栏按钮(或触发 return 到第一个视图控制器所需的任何视图)到视图控制器上方的 Exit 对象,然后选择正确的操作弹出菜单中的名称。 unwind segue 可以从 Document Outline 访问,并且可以给一个标识符以在 prepare(for:sender:) 中使用,以防数据需要从目标视图控制器发送到。此外,从第一个视图控制器到第二个导航控制器的 segue 必须是模态的。