我有UICollection,其中会有多个学生项目,每个项目内有开关用于录制考勤。我像这样循环遍历所有可见的细胞。
for(attendancecollectionViewCell* cells in [[self collectionView] visibleCells]){
NSLog(@"The switch value : %c",cells.attendanceSwitchLabel.isOn);
}
但是,我想循环遍历所有细胞以进行观察,而不仅仅是可见细胞。
答案 0 :(得分:15)
您无法遍历不可见的单元格,因为这些单元格不存在。与UITableView一样,UICollectionView会在屏幕外重用单元格。即,如果向下滚动,则需要滚动一个单元格并将其用于即将滚动到视图中的“新”单元格。
如果您希望保留集合中的条目状态,则必须将其与单元格本身分开存储。例如,映射到indexPath.row值的NSArray结构(或自定义NSObject)。
对你来说,一个更重要的问题是:你想要在你的for循环中实现什么?
如果您需要更多信息或示例代码,请与我们联系。
答案 1 :(得分:0)
func getAllCells() -> [UICollectionViewCell] {
var cells = [UICollectionViewCell]()
// assuming tableView is your self.tableView defined somewhere
for i in 0...self.numberOfSections-1
{
for j in 0...self.numberOfItems(inSection: i) - 1
{
if let cell = self.cellForItem(at: NSIndexPath(row: j, section: i) as IndexPath) {
cells.append(cell)
}
}
}
return cells
}