van*_*lsh 5 objective-c ios uicollectionview
我目前在视图上有4个不同的集合视图,我想允许取消选择.为此,我必须设置:
//Stop multiple selections on collectionview
self.bagsCollectionView.allowsMultipleSelection = YES;
self.shoesCollectionView.allowsMultipleSelection = YES;
self.dressesCollectionView.allowsMultipleSelection = YES;
self.jewelleryCollectionView.allowsMultipleSelection = YES;
Run Code Online (Sandbox Code Playgroud)
但是我只希望能够从每个集合视图中选择一个单元格.例如,在bagsCollectionView中,用户可以选择一个包,但也可以取消选择并选择另一个包.他们不能挑两个包或两个鞋.其他三个集合视图也一样!
我该怎么做呢?
小智 15
allowsMultipleSelection禁用时,没有内置支持取消选择所选单元格(通过再次点击).但这既有意又直观.默认行为并不是要为您可以切换的开关建模,然后关闭.
当您考虑选择项目(或表格行)的单一选择设计时,当用户想要选择不同的项目(或表格行)时,直观的行为是点击另一个项目(此时原始项目是由系统自动取消选择).在选择其他项目之前,他们不会(考虑需要)点击原始项目以取消选择它.
您可能正在尝试对通常不期望的内容进行建模,并且通过呈现与其他应用程序不同的交互,从UX的角度来看,它会稍微有点迷失方向.用户可能不会有意识地知道什么是错的,但它可能会影响整个应用体验.这可能代表设计问题(以及涉及一些不必要的代码).
如何处理您的要求
要实现取消选择但强制执行单选,您需要启用多个选择,然后在进行新选择时强制取消选择其他单元格.
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSArray *indexPaths = collectionView.indexPathsForSelectedItems;
// Don't deselect our own index path
[indexPaths removeObject:indexPath];
for (NSIndexPath *otherIndexPath in indexPaths) {
[collectionView deselectItemAtIndexPath:otherIndexPath animated:YES];
}
// ... Do whatever else you need to do in response to the selection
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4286 次 |
| 最近记录: |