2013-01-04 38 views
3

在我的应用程序中我有一个UICollectionView和一个UITableView。我使用电视进行导航,并使用简历进行细节展示。 CV的宽度可以由用户改变(每次摇摄;如灵活的UISplitViewController)。UICollectionView崩溃后reloadData它不在屏幕上

当用户在电视上选择一个项目时,应用程序会更新CV的相应细节项目。我使用

[myCV reloadData]; 

更新CV。当CV可见时,这很有效。

允许用户将导航电视放大到最大(全屏宽度) - 为此,我将CV宽度设置为零。当CV北京时间不可见的,用户选择另一个项目( - > CV reloadData),并且当随后用户重新打开内容-CV时,发生以下错误:

终止应用程序由于未捕获的异常“NSInternalInconsistencyException ”,原因:‘请求时,只有1集合视图’

部分作为我能想出迄今第2前项号 - CV不正确的更新本身,而reloadData,当不可见(因为其宽度为零,或者它在屏幕外或被另一个视图隐藏)。当我将CV宽度再次设置为大于0的值时,会发生错误。看来CV处理仍然是旧的cellItems,而不是dataDelegate提供的新的cellItems。

任何想法如何解决这种情况?

回答

2

我解决了这个问题。

在将content-view设置为零宽度之前,我从其超级视图中移除了content-view。我不设置内容视图宽度为0.当用户滑动内容视图再次打开,我应该设置宽度> 0,我再次添加视图到它的超级视图,然后设置新的宽度到其框架。

它不是很优雅,但像charme一样工作。