2

私はカスタムを持っており、UICollectionViewCellそのように登録してView Controllerからデキューします

[self.calendarView registerNib:[UINib nibWithNibName:NSStringFromClass([DayCell class]) bundle:nil] forCellWithReuseIdentifier:dayCell];

そして、そのようにデキューします

cell = [collectionView dequeueReusableCellWithReuseIdentifier:dayCell forIndexPath:indexPath];

私の質問は、どのUICollectionViewCellinit メソッドでセルのreuseIdentifier? awakeFromNibinitWithCoder:メソッドの両方が呼び出されます(null)が、どちらもself.reuseIdentifier.

これは問題です。同じUICollectionViewCellクラスを異なるreuseIdentifiers で使用して、わずかに異なる外観のセルを実現したいので、初期化時に一度スタイリングを実行したいからです。たとえば、セルdayCellDisabled reuseIdentifierのラベルは明るい色になります。

4

1 に答える 1

2

私が見つけた解決策の 1 つは、init または awake メソッドをオーバーライドせず、代わりにこのメソッドで再利用可能なビューを構成することです。

- (void)didMoveToSuperview {};

どうやら、このメソッドは、ビューがハンドラーに追加されるときに一度だけ呼び出されます。UICollectionViewCellこれは、に追加された再利用可能なものに当てはまることをテストして確認しましたUICollectionView

于 2015-02-22T08:36:19.290 に答える