【问题标题】:Master view doesn't show when I add Split View Controller to a Storyboard当我将拆分视图控制器添加到情节提要时,主视图不显示
【发布时间】:2012-08-15 05:15:54
【问题描述】:

我对故事板很陌生(对 iOS 编程也很陌生)。我正在尝试将主/详细视图添加到仅适用于 iPad 的应用程序的情节提要中。到目前为止,这是我所得到的:

  1. 驱动我的应用程序导航的主选项卡栏控制器。这是有效的。
  2. 我已从库中向 MainStoryBoard 添加了一个拆分视图控制器对象。
  3. Ctrl+从我的 Tab Bar Controller 拖到 Split View Controller,选择Relationship Seque->view controllers。这成功地将拆分视图控制器添加为新选项卡项(这是我想要的)。

但是现在当我运行我的应用程序并单击新标签项时,只是打开了详细视图,而没有在任何地方显示主视图。我显然还没有添加任何数据,我只想确保一切正常。如果它是空的,主人会不会显示?这不是其他表控制器为我工作的方式。他们都展示了空桌子。这就是我在这里寻找的东西,所以我可以继续在左侧连接细节。

Split View Controller 对我来说有点陌生,因为第一个控制器说“详细视图控制器”,其中包含导航控制器,然后是主视图控制器的表视图控制器,然后是详细视图控制器的简单视图控制器。除了入口点自称为详细视图控制器之外,所有这些对我来说都是有意义的。这是我在没有主弹出框/左窗格表的情况下运行它时显示的内容。

更新:当我从主从应用程序模板开始时,拆分视图控制器对象在主屏幕中显示主视图控制器和详细视图控制器。所以当我把它从库中拖出来时,情况就有所不同了。如何在不使用模板的情况下在现有故事板上完成相同的事情?我已经围绕选项卡控制器连接了相当多的其余导航,我不想重做。

谢谢。

【问题讨论】:

    标签: ios xcode cocoa-touch storyboard uisplitviewcontroller


    【解决方案1】:

    看起来 UISplitViewController 已在 iOS8.1 中更新,以允许在应用程序的根视图之外使用。我已经成功实现了一个标签栏项目,它与 UISplitViewController 相连。苹果自己的文档通过使用一个词来证实这一点:通常。在 UISplitViewController 的类文档中找到:

    在构建应用的用户界面时,拆分视图控制器通常是应用窗口的根视图控制器。

    所以 Apple 含糊其辞,但我会认为这样做是可以的。而且,我可以确认它有效。

    现在,您还需要做一些其他事情来防止它过早进入详细视图。我不打算重新散列细节,但请阅读这篇文章,然后继承 UISplitViewController:

    1. 在 viewDidLoad 中:将 SplitViewController 的委托设置为 self
    2. 将 UISplitViewControllerDelegate 添加到协议列表中
    3. 然后实现 splitViewController:collapseSecondaryViewController:ontoPrimaryViewController 并对整个方法或下面帖子中列出的情况返回 YES

    UISplitViewController in portrait on iPhone shows detail VC instead of master

    【讨论】:

      【解决方案2】:

      您不能将拆分视图控制器用作选项卡栏控制器的一项。

      例如见http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/SplitViewControllers.html

      拆分视图控制器必须始终是您的任何界面的根 创建。换句话说,您必须始终从 UISplitViewController 对象作为应用程序的根视图 窗户。然后,您的拆分视图界面的窗格可能包含 导航控制器、标签栏控制器或任何其他类型的视图 你需要实现你的接口的控制器。拆分视图 控制器不能以模态方式呈现。

      更新: 从 Xcode 6.1 和 iOS 7/8 开始,这似乎是错误的。请参阅@headache 的回答。

      【讨论】:

      • 当,难怪我找不到任何示例代码。我真正需要做的是让标签控制器导航到带有并排表格的屏幕。在左表上选择一个值需要填充右表。在选项卡控制器中是否有一种简单的方法可以做到这一点?也许只是一个带有两个表控制器的视图控制器?正如我所说,我完全是 iPad 设计模式的菜鸟。
      • @fr0man:我从来没有做过这样的设计,所以我不能给出好的建议。
      • 在 Xcode 6 中你绝对可以创建一个 UITabBarController 并且每个选项卡都可以是一个 UISplitViewController。如果您选择这样做,它也将向后兼容 iOS 7。我已经成功地做到了。所以这个答案至少在使用 Xcode 6 和使用 iOS 8 SDK 编译时是不正确的。
      • @Joey:很高兴知道,感谢您的反馈。遗憾的是,上面提到的“视图控制器目录”还没有更新。
      【解决方案3】:

      尝试在没有 TabBarController 的情况下进行测试。如果该错误将再次发生,则在 Xcode 中的 File Inspector for storyboard(小文件图标通常在屏幕的右上角)取消选中 Use Size Classes。在这个网站的某个地方,我看到了类似的错误和这个答案,我也遇到了同样的情况,但没有标签栏控制器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-01
        • 2014-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多