条形项按钮在运行时不显示,但在设计时在模态视图中可见

Bar item button not displayed at runtime but visible at design time in a modal view

我一直在尝试不同的事情,并且四处寻找了一段时间,但没有找到我的问题的答案。也许我在做一些根本性的错误。

示例应用程序包括:

第三个视图控制器中的条形项按钮在运行时不显示,但在设计时在 IntefaceBuidler 中显示。

第三个视图控制器需要以模式显示。

显示此栏项目按钮我做错了什么?

A sample project illustrating the problem is available here.

下面是设计时栏项按钮的屏幕截图:

下面是设计时未显示的栏项按钮的屏幕截图:

PS: 请忽略 "Unknown class ThirdViewControlller in Interface Builder file.",因为 ThirdViewController 在运行时显示正常。此外,视图中间的 "Done" 按钮工作正常。

SecondViewController 中,您需要将第三个推入导航控制器堆栈,如下所示:

self.navigationController?.pushViewController(thirdViewController, animated: true)

您目前正在将其呈现为模式。此外,您不必要地向故事板添加了第二个 UINavigationController(用于第三个视图控制器)

如果您想呈现模态,则需要将控制器嵌入到导航控制器中:

let navController = UINavigationController(rootViewController: thirdViewController)
self.present(navController, animated: false)

如果您希望将其保留在情节提要中,则需要为 UINavigationController 提供一个标识符并在您的函数中对其进行填充。

上面的按钮是一个导航栏项,只会显示在导航栏上。为了达到你想要的结果,你首先必须至少在你的第二个 viewcontroller 中嵌入导航控制器,然后你应该做一个 push segue 而不是 modal 。可以通过

添加导航控制器
  • 选择第二个 viewcontroller 转到 Editor\Embed In\Navigation 控制器
  • 为了以编程方式将 viewcontroller 推送到用户导航控制器的堆栈上,请使用

self.navigationController?.pushViewController(nextViewController, animated: true)