ios - UICollectionView 在屏幕外时 reloadData 后崩溃

标签 ios xcode uicollectionview

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

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

[myCV reloadData];

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

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

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for number of items before section 2 when there are only 1 sections in the collection view'

正如我目前所了解的那样 - 当 CV 不可见时(因为它的宽度为零,或者它在屏幕外,或者被另一个 View 隐藏),当 reloadData 时,CV 无法正确更新自身。当我再次将 CV 宽度设置为大于 0 的值时,会发生错误。似乎 CV 处理的仍然是旧的 cellItems,而不是 dataDelegate 提供的新的 cellItems。

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

最佳答案

我用变通办法解决了这个问题。

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

它不是很优雅,但很有魅力。

关于ios - UICollectionView 在屏幕外时 reloadData 后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160035/

相关文章:

ios - ITMS-90809:不推荐使用的API-Apple将停止接受使用UIWebView API的应用程序的提交

ios - 通过在嵌入式容器中的 Collection View 中选择一个单元格来更改 View Controller 中的值/图像

ios - 在 Objective C 中将包含 UILabel、UIImageView 和 UITableView 的 UIView 保存为 PDF

ios - 计算凸起畸变过滤器半径的收缩值

ios - 在 ViewController 中找到 indexPath

Xcode自定义segue动画

iOS - 使用 URL 方案打开某些 View Controller

找不到 Xcode 7.1 header

ios - 如何使用这样的图像/图标/ View 来偏移组合布局

ios - 从 UICollectionViewCell 中删除单元格和相应的图像?