我已将项目从iOS 7迁移到iOS 8,同时保持了对iOS 7的支持。自从我重做了所有图形以来,我已经抛弃了旧的故事板,并使用新的通用故事板和大小类创建了一个新的故事板。

在iOS 8 iPhone / iPad和iOS 7 iPhone上一切正常,但在iOS 7 iPad上,我将继续收到以下错误消息:

[NSKeyedUnarchiver initForReadingWithData:]: data is empty; did you forget to send -finishEncoding to the NSKeyedArchiver?


该应用程序甚至没有达到application:didFinishLaunchingWithOptions,我知道问题出在情节提要上,因为如果我创建一个空的故事板,则该应用程序启动正常。

我想念什么?我仅需要iPad专用的情节提要板才能支持iOS 7?还是有另一种方式?

编辑:

在一些测试中,我发现引发异常的方法是:

[storybord instantiateInitialViewController];


要么

[storyboard instantiateViewControllerWithIdentifier:@"id"];


我用一个空的故事板启动了该应用程序,并将我的故事板加载到了应用程序委托中。故事板不是零,但是应用程序在该方法上崩溃。加载不是最初的视图控制器不会改变结果。

最佳答案

我遇到了同样的问题,并将其范围缩小到为我的紧凑/任意尺寸类安装的集合视图,但为我的任意/任何尺寸类卸载的视图。当将原型单元所属的集合视图卸载到active size类中时,iOS 7似乎有麻烦。在iOS 8上运行正常,因此,如果仅支持iOS 8及更高版本,则不会遇到此问题。

原型单元处于活动状态(无效):


原型单元已删除(有效):


为了解决这个问题,我将创建一个xib,它将以编程方式为iPad加载,并将情节提要保留在iPhone上。由于相关视图在iPad上不需要“收藏夹视图”,因此xib应该很简单,但从维护的角度来看,这样做仍然很麻烦。

10-05 20:34
查看更多