1

当我多次点击 UICollectionView 的一个单元格时,双击、三次点击,它的委托方法 didSelectItemAtIndexPath 也被多次调用。预防它的最巧妙方法是什么?

我将不胜感激任何评论。

4

2 回答 2

2

您可以使用模型对象在其中保存选定的属性(或者您可以仅为此目的创建一个布尔数组)。并在 shouldSelectItemAtIndexPath 方法中检查它。

@cihangirs 代码:

- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath { 
    if (someModel.isSelected) { 
        return NO; 
    } else { 
        someModel.isSelected = YES; 
        return YES; 
    } 
}
于 2015-07-28T08:28:02.170 回答
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]将检查该单元格是否已被选中,如果是则它将返回该方法,使其不再进一步。

于 2015-07-28T08:09:02.713 回答