我在iOS 8上使用UISplitViewController时遇到问题。
具体来说,当旋转屏幕时,iPhone 6 Plus会崩溃。我认为是控制器尝试拆分/合并视图控制器造成的。
我的导航堆栈可能有点复杂,拆分视图的左右两侧都有UINavigationController。在切换到右侧堆栈之前,左侧堆栈可以推送多个项目。这与默认邮件应用程序非常相似。您可以在左侧堆栈上选择邮箱,打开文件夹并浏览邮件列表,在右侧堆栈上显示邮件并打开附件等。
我能够仅使用故事板配置来配置和连接不同视图的行为,通过使用“显示(例如推送)”将其推入左侧堆栈和“显示详细信息(例如替换)”。
点击一些按钮后(并填充右侧堆栈),在iPhone 6 Plus上旋转屏幕就会使应用程序崩溃。我意识到这是唯一会使两侧相互扩展和折叠的设备。调试器没有给出任何真正的信息,我只能偶尔得到以下消息:
- [UIView updateNavigationBarButtonsAnimated:]:向实例发送未识别的选择器
请注意,其中提到了UIView
,这似乎是随机的(NFCString,NSArray等),因此我认为它出现nil并指向堆上的随机代码。
我也意识到这与UISplitViewControllerDelegate
方法有关,但我无法弄清楚应该做什么才能使其正常工作。
assign
(或在Swift中使用unowned(unsafe)
)而不是weak
进行存储。这意味着当它被释放时,您需要将其设置为nil
。 - Aaron Brager