【问题标题】:Bar item button not displayed at runtime but visible at design time in a modal view条形项目按钮在运行时不显示,但在设计时在模态视图中可见
【发布时间】:2017-04-17 19:24:09
【问题描述】:

我一直在尝试不同的事情并环顾四周,但没有找到问题的答案。也许我在做一些根本错误的事情。

示例应用程序包括:

  • 使用 segue 显示第二个视图控制器的第一个视图控制器。这很好用。

  • 第二个视图控制器,我在其中以编程方式模拟了第三个视图的显示,其中包含一个我想显示的栏项目按钮(名为“完成”)。

第三个视图控制器中的bar item按钮在运行时不显示,而是在设计时显示在IntefaceBuidler中。

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

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

A sample project illustrating the problem is available here.

在设计时栏项目按钮的屏幕截图下方:

在设计时未显示的栏项目按钮的屏幕截图下方:

PS: 请忽略“Interface Builder 文件中的未知类 ThirdViewController。”,因为 ThirdViewController 在运行时显示正常。此外,视图中间的“完成”按钮也可以正常工作。

【问题讨论】:

    标签: ios swift swift3 interface-builder xcode8


    【解决方案1】:

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

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

    您当前将其呈现为模态。此外,您还不必要地在情节提要中添加了第二个 UINavigationController(用于第三个视图控制器)

    如果你想呈现一个模式,那么你需要将控制器嵌入到导航控制器中:

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

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

    【讨论】:

    • 感谢您的回答,但在模态视图中需要栏项目按钮。我已经相应地更新了问题。
    • 然后你需要将你的视图控制器嵌入到UINavigationController中。查看更新的答案。
    • 感谢您的反馈,我得到了它的工作。示例应用程序已更新。
    【解决方案2】:

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

    添加
    • 选择第二个视图控制器后,转到 Editor\Embed In\Navigation Controller
    • 用于以编程方式将视图控制器推送到用户导航控制器的堆栈使用

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

    【讨论】:

    • 感谢您的回答,但您的解决方案不符合要求,即显示模态视图控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多