3

collectionView:cellForItemAtIndexPath:いつでもそのセルを変更するために、たとえばそのラベルを更新するために、特定のセルを取得するために呼び出すことができます。私は、メソッドでUICollectionViewはなく、のクラスインスタンスメソッドについて話していますUICollectionViewDataSource

ただし、ヘッダー/フッターに同様の方法はないようです。collectionView:viewForSupplementaryElementOfKindすでに割り当てられているインスタンスを提供する代わりに、ヘッダー/フッターの一意のインスタンスを返します。このため、ラベルを更新する(たとえば)ためにヘッダーへのポインターを取得できません。セクションをリロードして、collectionView:viewForSupplementaryElementOfKindメソッドの本体で変更する必要があります。

カスタムオブジェクトキャッシュやタグを使用せずに、特定のヘッダー/フッターへのポインターを取得する適切な方法はありますか?

4

3 に答える 3

5

私の知る限りではありません(iOS 6までに、と同等の呼び出しが行われるまでにかかりましたUITableViewfooter/headerViewForSection

これが不可能な理由を推測する必要がある場合は、一部のレイアウトでUICollectionViewは自動的に再レイアウトされて補助ビューが調整されるため、ビューのコンテンツを「オンザフライ」で調整すると問題が発生する可能性があります。UICollectionViewただし、ビューをコピーするような面白いことを何もしないと仮定すると、補助ビューを別の配列に保持してそのように変更できるはずです-とはいえ、これが奇妙な動作や奇妙な動作を引き起こさないという保証はありません(同じタグを使用してコレクションビュー階層に入るという提案)。

したがって、簡単な答えはノーです。APIでこれをサポートするメソッドはありません。説得力のあるユースケースがある場合は、Appleのバグレポーターを通じて機能リクエストを提出する価値があります。

于 2013-01-08T09:57:40.193 に答える
2

これを行う正しい方法は、データソースのデータモデルオブジェクトを更新してから、を呼び出すこと[myCollectionView reloadData]です。これにより、コレクションビューがトリガーされ、データを再度要求し、必要に応じてそのサブビューを更新します。

于 2014-04-02T19:58:24.887 に答える
2

別の可能な解決策は、ヘッダービューNSNotificationにブロードキャストしたものをリッスンさせることです。そうすれば、気になるものは、あなたが持っている基準に基づいて自分自身を更新できます。

または、タグを付けて使用しますviewWithTag:

于 2015-02-12T00:20:22.207 に答える