当不是可见单元格时获取单元格集合的值

时间:2017-09-13 15:36:29

标签: ios swift

我想在我的集合视图中获取所有单元格的值,但我有不同的部分,我的集合视图不是所有单元格都可见,当我尝试获取值时,单元格可见获取值成功但是当我尝试获取时其余单元格的值显示错误:

unexpectedly found nil while unwrapping an Optional value

我的代码是

func getValueCells() {
    for section in 0..<numberOfYears {
        for row in 0..<3 {
            let index = IndexPath(row: row, section: section)

            let cell = myCollection!.cellForItem(at: index) as! CircularCell
            print(cell.lblPercent.text)
        }
    }
}

索引是否正确,有什么帮助?

2 个答案:

答案 0 :(得分:3)

if let cell = myCollection!.dataSource?.collectionView(self.collectionView, cellForItemAt: index) as? CircularCell {
  //access cell here
}

CollectionView将无法返回不在可见范围内的单元格,因为单元格可能已被重用。

您应该向数据源询问单元格而不是collectionView本身。

希望有所帮助

修改

虽然上面的答案解释了如何访问可见indexPath之外的单元格,但您的代码仍无法正常工作

print(cell.lblPercent.text)

除非你已经实现,否则你将无法访问单元格内的label / textField的内容

override func prepareForReuse() {
   //save the labels text somewhere in a variable or model
}
<{1>}中的

,并确保使用您已实施的CircularCell中的文字初始化所有标签/ textFields。

重复使用单元格时,单元格内部UI元素的值不会保留。它有责任确保相同的

答案 1 :(得分:0)

由于UICollectionViewUITableView单元格的可重用行为无法获取不可见单元格的值,

因为,只要细胞变得不可见,它们就会失去参考。

您可以从上面的答案中获取可见单元格中的值。