2017-09-22 30 views
0

コレクションビューで前のセル(インデックスパス。アイテム-1)にアクセスして、セル内のいくつかの条件が満たされている場合にその設定を変更したい今では、インデックスpath.itemコレクションビューのセルを取得する方法

で私はこの試みた:

 let previousCell = collectionView.cellForItem(at: indexPath - 1) 

をしかし、のために、それは動作しません - それは整数値へのインデックスパスからダウンキャストである1。

このセルはどのように入手できますか?

答えて

2

確認してください:

let previousCell = collectionView.cellForItem(at: IndexPath(row: indexPath.row-1, section: indexPath.section)) 

を識別子とセルを取得するには:

let prevIndexPath = IndexPath(row: indexPath.row-1, section: indexPath.section) 
let previousCell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: prevIndexPath) 
+0

生産的な回答をいただきありがとうございます。それは機能しますが、ただuicollectionviewcellを返します。特定の識別子でこのセルを取得することは可能ですか? – AlexVilla147

1

"以前のセル"とはどういう意味ですか?前の行と同じセクションを意味しますか?次に、この行より小さいrowのインデックスパスを作成します。

しかし、質問自体は、テーブルビューがどのように機能するかについての完全な誤解を示しているようです。セルに「アクセスする」必要はありません。 モデルを更新し、テーブル(または関連するセル)をリロードしてください。

+0

おかげであなたの答えをVOR。私はチャットアプリケーションを作成しています。誰かが連続して3つのメッセージを書いている場合。私はfacebookメッセンジャーのようなものと同様に、彼のプロフィール画像をthridメッセージの隣に表示したいだけです。これは私の最初のアイデアでした。このメッセージを解決するにはどうすればいいのでしょうか?プロファイルメッセージ – AlexVilla147

+0

が表示されていて、嫌いな人は、これらの質問に答えないでください。 – AlexVilla147

+0

誰も「憎む」。あなたの質問は、Mattが言っているように、テーブルビューの使い方を誤解していることを示唆しています。 iOSは、ビューオブジェクトがモデルオブジェクトからのデータを表示するMVCデザインパターンを使用します。別のindexPathにあるデータを変更する場合は、その場所のデータMODELを変更して、セルを更新するように指示する必要があります。 –

関連する問題