15

尝试为 iPad 制作基于故事板的应用程序。在其中,我需要从开始屏幕(UIViewController)转换到主屏幕(UISplitViewController),然后转换到全屏视图(再次是 UIViewController)。

我在网上看到了一些讨论(至少有几个 - 在 stackoverflow 上),指出 UISplitViewController 除了作为 RootViewController 之外,不能在基于 Storyboard 的应用程序中使用。一些线程包含解决方法,并且还有替代拆分视图(https://github.com/mattgemmell/MGSplitViewController)来解决这个问题。

但我不明白的是,为什么 Apple 文档的陈述恰恰相反。这是Apple 的 iOS 5.0 库中的章节链接。它指出:


使用情节提要创建拆分视图控制器

要将拆分视图控制器添加到应用程序的情节提要:

  1. 打开应用程序的主故事板。
  2. 将拆分视图控制器拖出库。这也为拆分视图控制器的两个窗格创建视图控制器。
  3. 对于每个拆分视图控制器包含的视图控制器,使用身份检查器设置视图控制器的类名。

要显示拆分视图界面,​​请执行以下操作之一:

  • 通过选择场景并选中属性检查器下的“是初始视图控制器”框,将其显示为第一个场景。
  • 通过向其添加模态转场,从另一个场景中显示它。
  • 以编程方式显示它,通过调用 performSegueWithIdentifier:sender: 方法来启动模态转场。

我尝试了很多方法,但最后两个语句中描述的方法从未奏效。modal segue 和 performSegue... 都失败并出现众所周知的错误:

“***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'应用程序试图以模态方式呈现拆分视图控制器......”

有谁能解释一下吗?这是 XCODE/iOS 5.0 中的错误还是文档中的错误?

问候,彼得

4

4 回答 4

2

根据这篇 Apple文章,拆分视图控制器必须是根。这是一个片段:

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

于 2012-01-30T15:32:34.413 回答
1

似乎在发布此问题后不久就更新了文档。根据新文档,没有办法转到故事板。无赖!

于 2012-09-06T20:32:30.090 回答
0

至于我,我使用MGSplitViewController来实现带有模态或推送 segues 的 SplitView。试试吧,它有效!

于 2013-04-23T20:56:08.540 回答
0

是的,有可能从 UIView 传递到 UISplitView。您必须使用自定义转场。

阅读此链接(从日语翻译)

UIViewController 到 UISplitViewController

于 2012-10-04T15:31:25.653 回答