3

在我的应用程序中,我有一个UICollectionView和一个UITableView. 我使用电视进行导航,使用 CV 进行详细介绍。用户可以更改电视和 CV 的宽度(每次平移;像一个灵活的UISplitViewController)。

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

[myCV reloadData];

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

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

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

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

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

4

1 回答 1

2

我通过变通方法解决了这种情况。

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

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

于 2013-01-06T17:52:40.407 回答