iOS7和iOS8之间的根视图控制器差异

Posted

技术标签:

【中文标题】iOS7和iOS8之间的根视图控制器差异【英文标题】:Root View Controller discrepancy between iOS7 and iOS8 【发布时间】:2014-12-05 21:24:18 【问题描述】:

我的应用在 ios7 上崩溃了,因为由于某种原因 rootViewControllerUINavigationController 而不是 UISplitViewController。所以应用程序在AppDelegate 中的let splitViewController = self.window!.rootViewController as UISplitViewController 的第一行崩溃。有没有类似的修复或解决方法?它在 iOS8 上运行良好

【问题讨论】:

您只是好奇地在哪些设备(物理或模拟)上测试此应用? 它出现在7.1.2的iPhone 4S上,我在运行7.1的模拟器上尝试调试它。 【参考方案1】:

好的,所以问题是 UISplitViewController 仅用于 iPad,而不是 iPhone。因此,仅当您需要 UISplitViewController 时,请确保您的项目下的目标设置为 iPad。如果您想同时支持这两种设备,我建议您检查一下您的应用程序当前在启动时运行的设备习惯用法,并在两个故事板之间交替(如果这样做,请确保您的目标是通用设备,而不仅仅是 iPad)。

【讨论】:

那为什么它在 iOS8 的 iPad 和 iPhone 上都能正常运行呢? 这是来自 UISplitViewController 类参考的引用。 “在 iOS 8 及更高版本中,您可以在所有 iOS 设备上使用 UISplitViewController 类;在以前的 iOS 版本中,该类仅在 iPad 上可用。”所以我会在执行不同的故事板之前检查 iOS 版本,看看是否有必要切换。 如果在编码时考虑到拆分视图控制器,支持 ios7 是否是一个巨大的解决方法? 不,你只是有不同的视图控制器,它们会调用相同的相似方法。不过,您可能必须使界面有所不同。

以上是关于iOS7和iOS8之间的根视图控制器差异的主要内容,如果未能解决你的问题,请参考以下文章

prepareForSegue 在 iOS 7 上无法获取目标视图控制器

iOS8:当手机旋转到横向时如何显示不同的视图控制器?

无法将状态栏设置为浅色内容(iOS7)

自定义视图控制器转换偶尔崩溃

更改视图转换会更改 iOS 7 上的视图位置,但不会在 ios8 上更改视图位置

ios 8 更改呈现/模态视图控制器的大小