2016-10-13 2 views
0

私は、自動スクロールせずにcollectionViewを再ロードする方法を見つけようとしています。私はまた、コレクションビューで物事を変更する必要がある他の多くの状況があることを認識していました。また、私はいくつかの項目を持っています。私は、アルファベットを変更し、テキストを変更したいと思っています。スウィフトでこれを行う方法はありますか?たとえば、各セルのビューを持つコレクションビューがあり、そのビューにtextFieldがある場合、テーブル全体をリロードしなくても、アルファとテキストを変更できます(アニメーションでアルファを変更することもできます)。リロードせずにUICollectionView要素に直接アクセスする方法はありますか?

+0

'reloadAtIndexPath'を試しましたか? – Santosh

+0

私はそれを知っていて、言及しようとしていましたが、ラベルやボタンを通常どおりに変更できるように、もっと深くなり、実際には単一のアイテムを変更する方法があるかどうか疑問に思っていました。 –

答えて

1

UICollectionViewのドキュメントをご覧ください。いくつかの「リロード」の方法があります。

  1. reloadData()
  2. reloadSections(_:)
  3. reloadItems(at:)

は、あなただけの、単一の項目をリロードデータソースのデータを更新し、その後に渡しreloadItems(at:)を呼び出したい場合アイテムのインデックスパス

セルが現在表示されている場合は、cellForItem(at:)メソッドを使用して既存のセルへの参照を取得することもできます。次に、必要に応じてセルのUIコンポーネントに直接アクセスできます。また、必要に応じてデータモデルを更新して、ユーザーがスクロールして戻ってくると、セルが適切にレンダリングされるようにする必要があります。

+0

申し訳ありませんが、ドキュメントは私に多くの行き詰まりと問題と混乱をもたらしました。これは素晴らしい答えですが、CellForItemは私が探していたものですが、私はそれとreloadItemsの両方をすれば、私がやろうとしていることを達成できると思います:) –

0

特定のUIcollectionViewcellのカスタムビューを更新できる場所は、reloadItemsAtIndexPathsです。 reloadDataでコレクションビュー全体よりも特定のアイテムを扱うことになります。 通知やコード内のコールバックを使用して処理できます。コードでは、いつどのセルを更新するかを決定できます。

ご希望の場合はお手数ですが、

関連する問題