2017-02-05 6 views
1

私は、労働者の週間スケジュールを表すコレクションビューを持っています。 コレクションを初期化するときに、すべての作業スロットをTRUEにします。つまり、すべてのコレクションアイテムを作業として埋め込む必要があります。コレクションビューのすべてのセルを繰り返して表示するかどうかを指定します。

私は今、毎週のスケジュールを表すboolean配列で、コレクションビューに渡されるデータモデルを実装しようとしています。 私はすべてのセルを反復して更新する方法を見つけることができないようです。私が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プロパティを変更することで、定期的にどのような目に見える細胞手段であること、私は私のアプリ内のすべての項目が表示さ取得するには、わかりません本当。

答えて

1

self.collectionView!.visibleCells.countにはすべての表示セルが含まれている必要がありますが、別の方法でアプローチする必要があります。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCellであなたのそのモデルに応じてとしてあなたの細胞を設定していることを確認してください:

  1. あなたのモデルを更新
  2. コールcollectionView.reloadData()
+0

私は、ありがとう – Sharonica

0

ちょうど私の解決策を共有するため、として、あるいはロン私には暗示されました:

コレクションビューで自分のモデルのインスタンスを作成しました:

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 機能私はいつも私を参照して読み込みますスケジュールデータ

関連する問題