【问题标题】:UIViewController defined in a xib file doesn't load in the storyboard在 xib 文件中定义的 UIViewController 不会加载到情节提要中
【发布时间】:2018-04-24 01:40:32
【问题描述】:

我正在尝试将 UIViewController 的子类及其在 xib 文件中定义的视图加载到情节提要中。我们称它为 NibViewController。

这种方法的重点是在应用的多个屏幕中重用同一个 ViewController。

我知道可以在代码中手动执行此操作,但我正在情节提要中寻找解决方案。我尝试过来自其他主题的建议,例如this one,但没有任何效果。 ViewController 在模拟器中正确显示,但在情节提要中没有。这是代码:https://github.com/srstanic/NibViewControllerInStoryboard 这是屏幕截图:

我是否误以为 NibViewController 的内容会出现在情节提要中?

【问题讨论】:

    标签: ios swift uiviewcontroller storyboard xib


    【解决方案1】:

    我是否误以为 NibViewController 的内容会出现在情节提要中?

    是的,你错了。您的应用程序运行良好,因此您应该停止担心并继续操作。

    通过从情节提要中的视图控制器中删除视图,您已明确指示情节提要:“不要为此视图控制器创建视图。在运行时,视图应来自 xib 文件,而不是你的。”

    这正是运行时发生的。因此,只需在 xib 文件中设计您的界面,一切都会好起来的。

    【讨论】:

    • 感谢您的澄清!不过,这不是我希望学习的内容:) 我的目的是在 xib 文件中设计一个容器控制器,然后在情节提要中使用它,就像我使用 UINavigationController 一样。但是,如果容器控制器的视图不会加载到情节提要中,则无法将子视图控制器添加到该容器控制器。我在这里错过了什么吗?
    • "我的意图是在 xib 文件中设计一个容器控制器,然后在故事板中使用它,就像我使用 UINavigationController 一样。但是如果容器控制器的视图不会加载到故事板中,那么无法将子视图控制器添加到该容器控制器。”好吧,当然,xib 中没有内容视图。但是你可以在代码中添加子视图控制器,没问题。我们甚至在故事板出现之前就这样做了:apeth.com/iOSBook/ch19.html#_container_view_controllers
    • 我希望有一种方法可以以视觉格式进行。从情节提要中掌握复杂的视图控制器层次结构比从代码中更容易。感谢您的回答,非常感谢!
    • 嗯,在我看来,您的目标还不够清楚。这似乎是一个 x-y 问题。您没有解释您真正想要做什么,而是删除了视图控制器的主视图,现在您对此感到懊悔。无论你想做什么,都不是这样。你想做什么做?问一个问题。
    • 我突然想到要指出,您可以在不使用容器视图的情况下制作相当于嵌入 segue 的内容 - 即,制作 custom segue behaves 就像一个嵌入转场。这样你就可以吃蛋糕了:你有一个 segue 来显示故事板中的层次结构,但我们不假设视图控制器的视图来自哪里。这让你满意吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2015-11-14
    • 2015-09-18
    • 1970-01-01
    • 2012-06-22
    • 2014-08-04
    相关资源
    最近更新 更多