根据集合视图编程指南,应该处理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];
}
}
这种方法而不是委托方法有什么缺点吗?