迭代集合视图中的所有单元格,可见或不可见

时间:2017-02-05 14:35:10

标签: swift uicollectionview

我有一个集合视图,代表工人的每周计划。 当我初始化集合时,我将所有工作槽都设置为TRUE,这意味着所有集合项应该被填充为正常工作。

我现在正在尝试实现一个数据模型,它是一个表示每周计划的布尔数组,并将传递给集合视图。 我似乎无法找到迭代所有单元格并更新它们的方法。当我使用visibleCells()时,我得到一个空数组。

一些代码:

    func updateShifts(schedule: WeeklySchedule, shift: Int){
    print(self.collectionView!.visibleCells.count) // prints 0

    for cell in self.collectionView!.visibleCells as! [SchedulePickupCell] {
        cell.setWorking(isWorkingInput: false)
    }

}

在代码中,SchedulepickupCell是我的自定义集合视图单元格。 这段代码位于我的班级内:

class ScheduleCollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout

现在我不确定什么是可见单元格意味着,我经常在我的应用程序中看到所有项目,我想要的是迭代并将其isHidden属性更改为true。

2 个答案:

答案 0 :(得分:1)

虽然self.collectionView!.visibleCells.count应该包含所有可见的单元格,但我相信你应该采用不同的方法。

确保在func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell根据模型设置您的单元格,然后:

  1. 更新您的模型
  2. 致电collectionView.reloadData()

答案 1 :(得分:0)

只是为了分享我的解决方案,正如Or Ron暗示我:

我在集合视图中创建了我的模型实例:

    var schedule = [[false, false, false, false, false, false, false],
                [false, false, false, false, false, false, false]]

然后我更改了func以更新班次:

    func updateShifts(schedule: WeeklySchedule){
    self.schedule = schedule
    self.collectionView!.reloadData()

}

然后在func collectionView(_ collectionView:UICollectionView,cellForItemAt indexPath:IndexPath) - > UICollectionViewCell 函数我总是加载参考我的日程表数据