重载后,UICollectionView在屏幕外时崩溃

时间:2013-01-04 15:31:18

标签: ios xcode uicollectionview

在我的应用中,我有UICollectionViewUITableView。我使用电视进行导航,使用简历进行详细介绍。电视和电视的宽度用户可以更改CV(每次平移;就像灵活的UISplitViewController)。

当用户选择电视中的项目时,应用程序会使用相应的详细信息更新模具CV。我用

[myCV reloadData];

用于更新简历。当CV可见时,这非常有效。

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

  

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'当在集合视图中只有1个部分时,请求第2部分之前的项目数'

到目前为止我可以弄清楚 - 当reloadData不可见时(因为它的宽度为零,或者它是在屏幕外,或者被另一个视图隐藏),CV在reloadData时没有正确更新。当我再次将CV宽度设置为值> 0,发生错误。似乎CV处理仍然是旧的cellItems而不是dataDelegate提供的新cellItem。

知道如何解决这种情况吗?

1 个答案:

答案 0 :(得分:2)

我通过解决方案解决了这个问题。

在我将内容视图设置为零宽度之前,我从其超级视图中删除了内容视图。并且我没有将内容视图宽度设置为0.当用户再次打开内容视图时,我应该设置宽度> 0,我再次将视图添加到其超视图中,然后将新宽度设置为其框架。

它不是很优雅,但却像魅力一样。