В соответствии с Руководство по программированию в формате Collection необходимо обработать визуальное состояние подсветки ячейки в UICollectionViewDelegate
. Вот так:
- (void)collectionView:(PSUICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
MYCollectionViewCell *cell = (MYCollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath];
[cell highlight];
}
- (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
MYCollectionViewCell *cell = (MYCollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath];
[cell unhighlight];
}
Что мне не нравится в этом подходе, так это то, что он добавляет логику к делегату, который очень специфичен для ячейки. Фактически, UICollectionViewCell
управляет своим выделенным состоянием независимо через свойство highlighted
.
Не будет ли переопределение setHighlighted:
более чистым решением, тогда?
- (void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
if (highlighted) {
[self highlight];
} else {
[self unhighlight];
}
}
Есть ли недостатки для этого подхода, а не для подхода делегата?