当我多次点击UICollectionView的一个单元格 - 双击,三次点击时,它的委托方法didSelectItemAtIndexPath也被多次调用。什么是最简单的预防措施?
我将不胜感激。
答案 0 :(得分:2)
您可以使用模型对象在其中保存选定的属性(或者您可以仅为此目的创建布尔数组)。并在shouldSelectItemAtIndexPath方法中检查它。
@cihangirs代码:
- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath {
if (someModel.isSelected) {
return NO;
} else {
someModel.isSelected = YES;
return YES;
}
}
答案 1 :(得分:0)
这是实现目标最安全的方法: -
(void)collectionView:(UICollectionView *)collectionView
didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
if([[collectionView indexPathsForSelectedItems] containsObject:indexPath]) // checking whether cell is already selected or not
{
return;
}
else
{
// do whatever you want to do on selection of cell
}
}
这里发生的事情是,无论何时选择一个单元格,它都会自动存储Collection视图的“indexPathsForSelectedItems”,因此下次再次点击所选单元格时,此方法[[collectionView indexPathsForSelectedItems] containsObject:indexPath]
将检查该单元格是否已经存在选择与否,如果是,那么它将返回该方法,以便它不会更进一步。