0

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

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

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

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

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

谢谢。

4

3 回答 3

6

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

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

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

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

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

iPhone 上的 UISplitViewController 纵向显示细节 VC 而不是 master

于 2014-10-26T00:39:24.873 回答
2

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

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

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

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

于 2012-08-19T16:47:03.083 回答
0

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

于 2014-11-16T18:08:24.593 回答