我正在尝试修改现有应用以使用拆分视图控制器。我通过在我的故事板中添加一个拆分视图控制器来跟踪示例主/详细项目结构,使其成为初始视图控制器,一切似乎都运行良好,直到我尝试在iOS 7模拟器中运行应用程序。我在application: didFinishLaunchingWithOptions
self.window.rootViewController
中遇到断点时突然出现了我的主视图控制器的类型,而不是拆分视图控制器本身。
我想也许那时我只需要从根视图本身获取拆分视图控制器并尝试rootViewController.splitViewController
,但那是nil
。我一定错过了启用这个拆分视图控制器的一些设置步骤,但我不知道它是什么。
答案 0 :(得分:0)
这是因为iOS7中的iPhone不支持UISplitViewController
,仅支持iPad。
如果您在iPad iOS7中运行代码,您将看到UISplitViewController
。
仅在iOS8中,Apple也增加了对iPhone的支持。
答案 1 :(得分:0)
所以这最终成为一个相当模糊的问题。这似乎是由iOS 8 SDK和Xcode 6处理故事板和大小类的方式引起的。我打算用苹果公司提交一份错误报告,但是重新制作这些报告的步骤很简单:
您必须从生成的应用委托中注释掉这一行,它会在iOS 7目标中崩溃:
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
在适用于iOS 7.1的iPad模拟器上运行
此问题的解决方法是在故事板上禁用大小类。我认为Xcode 6和iOS 8 SDK处理iPad大小类与通用应用程序构建的方式导致这种方法无法在iOS 7目标上运行,但关闭大小类可以解决问题。