【问题标题】:Label text in UICollectionViewCell not updatingUICollectionViewCell 中的标签文本未更新
【发布时间】:2014-11-28 09:28:59
【问题描述】:
在UICollectionViewCell 加载后,我试图在UICollectionViewCell 中更改UILabel 的文本,同时点击button。但标签不会在屏幕上更新。控制台显示标签的 text 属性已更新,但似乎标签没有用新文本重绘。
这是UICollectionViewCells 的已知问题吗?也许是某种缓存问题?我是否需要 reload 单元格或整个集合视图才能显示更新?
【问题讨论】:
标签:
ios
objective-c
uikit
uicollectionview
uicollectionviewcell
【解决方案1】:
我遇到过类似的情况,collectionView 单元格中的 UILabel 更新正常。然后在对故事板进行一些修改后,UILabel 在以编程方式更新值时不会改变。如最初的问题所述,即使调试终端显示连接的 UILabel 属性文本正在更新,该值仍保持默认值。
这是我解决问题的方法。在故事板中,
- 删除了 UILabel 的引用出口(在“显示连接检查器”中)
- 从情节提要中删除了 UILabel
- 重新添加了 UILabel
- 将引用出口重新连接到 swift 文件代码属性
不知何故,一切又开始正常工作了。
附带说明:Radwa 答案的 swift 3.1 版本是:
collectionView.reloadItems(at: [indexPath]) // single cell in the collection view
collectionView.reloadData() // entire collection view
【解决方案2】:
因为单元格已经加载,单元格在重新加载之前不会发生任何变化,因此您可以重新加载整个集合视图
[self.collectionView reloadData];
或者只有一个/多个单元格受到数据更改的影响
[self.collectionView reloadItemsAtIndexPaths: indexpathArray];
但请确保在重新加载单元格之前正确更改数据