当我多次点击 UICollectionView 的一个单元格时,双击、三次点击,它的委托方法 didSelectItemAtIndexPath 也被多次调用。预防它的最巧妙方法是什么?
我将不胜感激任何评论。
当我多次点击 UICollectionView 的一个单元格时,双击、三次点击,它的委托方法 didSelectItemAtIndexPath 也被多次调用。预防它的最巧妙方法是什么?
我将不胜感激任何评论。
您可以使用模型对象在其中保存选定的属性(或者您可以仅为此目的创建一个布尔数组)。并在 shouldSelectItemAtIndexPath 方法中检查它。
@cihangirs 代码:
- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath {
if (someModel.isSelected) {
return NO;
} else {
someModel.isSelected = YES;
return YES;
}
}
这是实现目标的最安全方法:-
(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]
将检查该单元格是否已被选中,如果是则它将返回该方法,使其不再进一步。