如果我像这样创建一个 UICollectionViewCell 子类:
class StudentCell: UICollectionViewCell {
var student: Student?
}
在我的 Controller 中,我实现了 UICollectionView 的 didSelectItemAtIndexPath 并设置了变量:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if let studentCell = collectionView.cellForItemAtIndexPath(indexPath) as? StudentCell {
studentCell.student = self.someStudent
}
}
当我点击单元格时,它应该设置学生,但如果单元格滚动到屏幕之外,整个单元格可能会被删除,当它回到屏幕上时,它需要在 cellForItemAtIndexPath< 中重建自己/strong>.
我遇到的问题是我有一个 UICollectionView,其中的单元格不会滚动到我正在存储数据的屏幕之外。因为它们不会离开屏幕,所以我认为它们不应该被删除,但其中一个单元格似乎并没有保持它的可变性,这让我觉得它可能正在被删除,我可能需要将单元格外的状态移动到字典或其他东西,并在 didSelectItemAtIndexPath 我没有在单元格中设置变量,而是设置了字典。每当我需要访问数据而不是向单元格询问数据时,我都会在字典中查找它。
但无论哪种方式,我想知道是否有可能(或一个坏主意)将其设置在单元格中。
最佳答案
是的,UICollectionView
和 UITableView
中的单元格可以(将)由系统自行决定重用,不应用于存储状态信息,仅用于显示信息。具体来说,两个 View 在滚动到屏幕外时都会重用单元格,但不能保证这是唯一一次重用它们。处理此问题的通常方法是定义某种单元格数据对象,该对象存储每个单元格(可见和不可见)的数据,并根据需要/请求从中刷新单元格 View 。
关于ios - 您可以将状态存储在自定义 UICollectionViewCell 中吗?或者状态是否可以被删除(比如当单元格滚出屏幕时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27927060/