XCode 6中的UISplitViewController适用于iOS 7应用程序

8
我正在使用Xcode 6和Swift开发一款仅适用于iPad的应用程序,使用UISplitViewController。该应用程序应支持iOS 7.1及更高版本。我将项目的部署目标设置为iOS 7.1,并保持SDK版本为8.0以支持Swift。我曾经在Xcode 6 beta 6上拥有一个可工作的版本,但是在将Xcode升级到gold master版本后,该应用程序在iOS 7.1(模拟器和设备)上不再起作用。
即使使用Xcode GM提供的主细节模板创建一个空白应用程序,在iOS 7.1上也无法工作。我已经在空白应用程序的生成AppDelegate中禁用了displayModeButtonItem,因为这在iOS 7上不受支持,但是该应用程序在didFinishLaunchingWithOption委托方法的第一行崩溃。
代码:
func application(application: UIApllication, didFinishLaunchingWithOptions: [NSObject: AnyObject]?) -> Bool {
    let splitViewController = self.windows!.rootViewController as UISplitViewController
    let navigationController = splitViewController.viewControllers[splitViewContoller.viewControllers.count-1] as UINavigationController
    splitViewController.delegate = self
}

第一行会导致错误访问异常。

使用Xcode 6是否可以为iOS 7编写分割视图应用程序?在iOS SDK 7和8之间的UISplitViewController差异巨大。查看苹果SDK文档中的类参考,它看起来像是对UISplitViewController的完全重写。

编辑: 我刚刚意识到,在Xcode 6 GM或Xcode 6.0.1中打开我的应用程序的故事板后,XML中的某些版本信息发生了变化。如果我还原这些更改并在不打开Xcode 6 GM或6.0.1中的故事板的情况下重新编译我的应用程序,则该应用程序可以在iOS 7.1上正常工作。

编辑(2014年10月21日): 在XCode 6.1中仍存在问题。


2
看起来在iOS7上崩溃的原因是self.window.rootViewController返回的是一个UINavigationController,而不是一个UISplitViewController。 - Brian Broom
1个回答

5

我曾经遇到过类似的问题。关闭大小类别对我有帮助。

在故事板中,右侧面板上,点击“显示文件检查器”(纸张图标),并取消选择自动布局设置下方的“使用大小类别”。


2
禁用大小类对我也起作用。谢谢分享。我也验证了@brian-broom的发现。在故事板和大小类中,编译器似乎出现了一些问题。 - Kay Zumbusch
哥们,你真是太棒了。我喜欢Stackoverflow,只因为有像你这样的人在每个障碍上都帮助开发者。谢谢 ;) :) - Eshwar Chaitanya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接