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

Posted

技术标签:

【中文标题】适用于 iOS 7 应用程序的 XCode 6 中的 UISplitViewController【英文标题】:UISplitViewController in XCode 6 for iOS 7 app 【发布时间】:2014-09-18 14:59:24 【问题描述】:

我正在使用 Xcode 6 和 Swift 开发带有 UISplitViewController 的仅 iPad 应用程序。该应用程序应支持 ios 7.1 及更高版本。我将项目的部署目标设置为 iOS 7.1,并将 SDK 版本保持在 8.0 以支持 Swift。我有一个使用 Xcode 6 beta 6 的工作版本,但在将 Xcode 升级到黄金主版本后,该应用程序不再适用于 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 差异很大。查看 Apples 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 中仍然存在问题。

【问题讨论】:

看起来 iOS7 上的崩溃是因为 self.window.rootViewController 返回的是 UINavigationController,而不是 UISplitViewController。 【参考方案1】:

我遇到了类似的问题。关闭尺寸等级为我修复了它。

在故事板的右侧窗格中,单击“显示文件检查器”(纸张外观图标),然后取消选中自动布局设置下的“使用大小类”。

【讨论】:

禁用尺寸等级也适用于我。感谢分享。我还验证了@brian-broom 的发现。故事板和大小类的编译器似乎有些搞砸了。 伙计,你真是太棒了。我喜欢 *** 只是因为像你这样的人在每一个障碍上都为开发人员提供帮助。谢谢 ;) :)

以上是关于适用于 iOS 7 应用程序的 XCode 6 中的 UISplitViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何管理适用于 iOS 7 和 iOS 6.0 的自动布局约束

如何在 iOS 中添加双拇指滑块?以及为啥这个双滑块库不再适用于 xcode 7

将应用程序从适用于 iOS 10 的 xcode 7.3.1 上传到 iTunes

XCode 6.4 中 iOS8 Storyboard 中缺少约束图标,适用于最初在早期版本的 iOS 下编写的应用程序

这是适用于 iOS 7 的 Xcode 5 中的错误吗?

Xcode 5 ios 7 中的自动布局。如何创建适用于 iphone 4 和 iphone 5 的应用程序