何时
collectionView.allowsMultipleSelection = YES;
我可以取消选择已选择的细胞。
何时
collectionView.allowsMultipleSelection = NO;
我无法取消选择已选择的细胞。
无论如何我只能设置
collectionView.allowsMultipleSelection = NO;
和
能够取消选择所选单元格吗?所以选择一个或不选择一个。
我知道您可以通过点击手势实现自己的选择,然后在检测到手势时调用setSelected。但我正在寻找更原生的解决方案,你可以在uicollectionView本身上配置。
谢谢!
答案 0 :(得分:2)
我遇到了同样的问题,无法找到原生解决方案。这就是我最终做到这一点,有点hacky但它做了所需要的。我在self.collectionView.allowsMultipleSelection = YES
设置了viewDidLoad
。
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
for (NSIndexPath *selectedIndexPath in [self.collectionView indexPathsForSelectedItems]) {
[self.collectionView deselectItemAtIndexPath:selectedIndexPath animated:NO];
}
[collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionNone];
}
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {
[collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionNone];
[collectionView deselectItemAtIndexPath:indexPath animated:YES];
}
didDeselectItemAtIndexPath
中的附加选择和取消选择是为取消选择设置动画 - 这种方法提供了额外的好处,能够为过渡设置动画。