2017-10-24 6 views
0

ビューオブジェクトを更新できるように、コレクションビュー内のcellForItem内の次のセルを取得する必要があります。私は以下のことを試してみるとうまくいきません。またindexPathForVisibleItemsindexPath.row + 1に渡してみましたが、インデックスから範囲外のエラーが発生しました。SwiftのUIcollectionViewの次のセルを取得

let index = IndexPath(row: indexPath.row + 1, section: indexPath.section) 
      if let nextCell = collectionView.cellForItem(at: index) as! MKRCell { 
       nextCell.setupWaitView(time: timeToWait) 
       nextCell.waitViewHeightConstraint.constant = 80 
       nextCell.waitView.alpha = 1 
       nextCell.waitView.isHidden = false 
      } 

これは実現可能かどうか、別の方法でこれを行う必要がありますか?

おかげ

+0

データを変更してそのデータを使用してセルを作成する方がはるかに優れています。 –

+0

cellForItemが呼び出された瞬間、次のセルは使用できません。それで、なぜあなたはそれをしたいのですか?詳細を説明できますか? –

+0

現在のセルに特定の値(timeToWait)がある場合、次のセルのメソッドを呼び出そうとしています。 – user7684436

答えて

1

いいえ、cellForItemAtに初期化する前に、セルオブジェクトを取得することはできませんが、ここで あなたはUICollectionViewDelegate

func collectionView(_ collectionView: UICollectionView,willDisplay cell: UICollectionViewCell,forItemAt indexPath: IndexPath) { 
    if let myCell = cell as? MKRCell { 

    } 
} 

からセルを表示する前に電話を受けることができます

セルを設定する場合は、ビューを設定する必要がある場合はUICollectionViewDataSource

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

} 
+0

試着willDisplay、nextCellのキャストに問題があります!しかしMKRCell! – user7684436

+0

これはnextCellは計算を適用しません。コールクラスにキャストするだけです –

+0

nextcellにMKRCellとしてアクセスして、そこからメソッドを呼び出す必要があります。 – user7684436

1

あなたには、セルを更新する必要があります

func collectionView(_ collectionView: UICollectionView, 
    cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

あなたは、このメソッドから戻ることでしょうセルのみを変更することを忘れないでください。その時点で他のセルが存在していない可能性があります。

また、セルの弱い参照を保持し、必要に応じてセルを更新することもできます。

+0

上記のcellForItemを試しましたが、特定のインデックス+ 1でアイテムを再読み込みするなど、機能しませんでした – user7684436

関連する問題