Window的根视图控制器不是Split视图控制器

时间:2015-02-27 14:33:49

标签: ios ios7 xcode6 uisplitviewcontroller

我正在尝试修改现有应用以使用拆分视图控制器。我通过在我的故事板中添加一个拆分视图控制器来跟踪示例主/详细项目结构,使其成为初始视图控制器,一切似乎都运行良好,直到我尝试在iOS 7模拟器中运行应用程序。我在application: didFinishLaunchingWithOptions self.window.rootViewController中遇到断点时突然出现了我的主视图控制器的类型,而不是拆分视图控制器本身。

我想也许那时我只需要从根视图本身获取拆分视图控制器并尝试rootViewController.splitViewController,但那是nil。我一定错过了启用这个拆分视图控制器的一些设置步骤,但我不知道它是什么。

2 个答案:

答案 0 :(得分:0)

这是因为iOS7中的iPhone不支持UISplitViewController,仅支持iPad。

如果您在iPad iOS7中运行代码,您将看到UISplitViewController

仅在iOS8中,Apple也增加了对iPhone的支持。

答案 1 :(得分:0)

所以这最终成为一个相当模糊的问题。这似乎是由iOS 8 SDK和Xcode 6处理故事板和大小类的方式引起的。我打算用苹果公司提交一份错误报告,但是重新制作这些报告的步骤很简单:

  1. 创建新的主/明细应用程序
  2. 将部署目标设置为低于8.0(7 / 7.1工作)
  3. 从" Universal"更改应用程序类型到" iPad"
  4. 您必须从生成的应用委托中注释掉这一行,它会在iOS 7目标中崩溃:

    navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
    
  5. 在适用于iOS 7.1的iPad模拟器上运行

  6. 此问题的解决方法是在故事板上禁用大小类。我认为Xcode 6和iOS 8 SDK处理iPad大小类与通用应用程序构建的方式导致这种方法无法在iOS 7目标上运行,但关闭大小类可以解决问题。