gpt4 book ai didi

ios - UICollectionView Segues 和同一 UICollectionViewCell 上的多重选择

转载 作者:行者123 更新时间:2023-11-29 12:11:17 25 4
gpt4 key购买 nike

我有一个 UICollectionView。如果我触摸一个单元格,它会触发一个 segue。如果启用了“垃圾桶”或“保存”,那么用户应该能够触摸单元格以添加到为相应操作处理的数组中。

启用垃圾桶/保存时,将触发 segue 而不是允许多选。我该怎么做才能拥有 2 种模式:1 种用于连续选择,1 种用于多选。

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

if (self.saveEnabled == YES) {
NSArray *itemsToDelete = [self.collectionView indexPathsForSelectedItems];

[self.itemsArray addObjectsFromArray:itemsToDelete];
}

else if (self.trashEnabled == YES) {
NSArray *itemsToDelete = [self.collectionView indexPathsForSelectedItems];
[self.itemsArray addObjectsFromArray:itemsToDelete];
}
else{
[self performSegueWithIdentifier:@"collectionUnwind" sender:self];

}
}

最佳答案

关键一步是多选时需要在shouldPerformSegueWithIdentifier中返回false。

下面是我在 swift 中的做法:

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
return !self.collectionView.allowsMultipleSelection
}

我是通过长按来切换单选和多选模式,你也可以使用按钮来实现同样的效果。

func setupLongPressGesture() {
let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongPress))
longPressGesture.minimumPressDuration = 1.0 // 1 second press
longPressGesture.delegate = self
self.collectionView.addGestureRecognizer(longPressGesture)
}

@objc func handleLongPress(_ gestureRecognizer: UILongPressGestureRecognizer){
if gestureRecognizer.state == .began {
self.labelState.text = "multiple selection enabled"
} else if gestureRecognizer.state == .ended {
self.collectionView.allowsMultipleSelection = !self.collectionView.allowsMultipleSelection
}
}

我引用这里的教程:https://www.appcoda.com/ios-collection-view-tutorial/

关于ios - UICollectionView Segues 和同一 UICollectionViewCell 上的多重选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com