在我的应用中,我有UICollectionView
和UITableView
。我使用电视进行导航,使用简历进行详细介绍。电视和电视的宽度用户可以更改CV(每次平移;就像灵活的UISplitViewController
)。
当用户选择电视中的项目时,应用程序会使用相应的详细信息更新模具CV。我用
[myCV reloadData];
用于更新简历。当CV可见时,这非常有效。
允许用户将导航电视缩放到最大(全屏宽度) - 为此我将CV宽度设置为零。当CV不可见时,用户选择另一个项目( - > cv reloadData),然后当用户重新打开内容CV时,会发生以下错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'当在集合视图中只有1个部分时,请求第2部分之前的项目数'
到目前为止我可以弄清楚 - 当reloadData不可见时(因为它的宽度为零,或者它是在屏幕外,或者被另一个视图隐藏),CV在reloadData时没有正确更新。当我再次将CV宽度设置为值> 0,发生错误。似乎CV处理仍然是旧的cellItems而不是dataDelegate提供的新cellItem。
知道如何解决这种情况吗?
答案 0 :(得分:2)
我通过解决方案解决了这个问题。
在我将内容视图设置为零宽度之前,我从其超级视图中删除了内容视图。并且我没有将内容视图宽度设置为0.当用户再次打开内容视图时,我应该设置宽度> 0,我再次将视图添加到其超视图中,然后将新宽度设置为其框架。
它不是很优雅,但却像魅力一样。