将Split View Controller添加到Storyboard时,主视图不会显示

时间:2012-08-19 16:30:28

标签: ios xcode cocoa-touch storyboard uisplitviewcontroller

我对故事板很新(对于一般的iOS编程来说也很新)。我正在尝试为我的故事板添加主/详细视图,仅适用于iPad。这是我到目前为止所得到的:

  1. 主要标签栏控制器,用于驱动我的应用的导航。这很有效。
  2. 我已经从库中向MainStoryBoard添加了一个Split View Controller对象。
  3. Ctrl +从我的标签栏控制器拖动到拆分视图控制器,选择关系设置 - >视图控制器。这成功地将Split View Controller添加为新选项卡项(这就是我想要的)。
  4. 但现在,当我运行我的应用程序并单击新标签项时,只需打开详细视图,而无需在任何地方显示主视图。我显然还没有添加任何数据,我只是想确保一切正常工作。主人不会表明它是不是很好?这不是其他桌面控制器对我有用的方式;他们都显示空表。这就是我在这里寻找的所以我可以继续在左边布线细节。

    拆分视图控制器看起来有些陌生,因为第一个控制器说“细节视图控制器”带有segues到导航控制器,然后是主视图的表视图控制器,然后是详细信息的简单视图控制器。除了那个自称为详细视图控制器的入口点之外,所有这些对我都有意义。当我在没有主popover /左窗格表的情况下运行它时显示的是什么。

    更新:当我从Master-Detail应用程序模板开始时,Split View Controller对象同时显示主屏幕中显示的Master View Controller和Detail View Controller。因此,当我从库中拖出它时,有些不同。如何在不使用模板的情况下在现有故事板上完成相同的操作?我已经在Tab控制器周围连接了很多其他导航,我宁愿不重做。

    感谢。

3 个答案:

答案 0 :(得分:4)

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

  

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

所以Apple很模糊,但我会这样做,因为它可以做到这一点。而且,我可以确认它有效。

现在,还有其他一些工作要做,以防止它过早地进入详细视图。我不打算重新哈希细节,但是阅读这篇文章,然后继承UISplitViewController:

  1. 在viewDidLoad中:将SplitViewController的委托设置为self
  2. 将UISplitViewControllerDelegate添加到协议列表
  3. 然后实现splitViewController:collapseSecondaryViewController:ontoPrimaryViewController并将YES返回给整个方法或下面帖子中列出的情况
  4. UISplitViewController in portrait on iPhone shows detail VC instead of master

答案 1 :(得分:2)

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

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

  

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

更新:从Xcode 6.1和iOS 7/8开始,这似乎是错误的。见@头疼的答案。

答案 2 :(得分:0)

尝试在没有TabBarController的情况下进行测试。如果错误再次发生,那么在文件检查器中的Xcode中为故事板(通常在屏幕右上角的小文件图标)取消选中Use Size Classes。在这个网站的某个地方,我看到了类似的错误和这个答案,我也有相同的情况,但没有标签栏控制器。