我正在实现一个显示图像的collectionView,当用户选择其中一个图像时,它将以largeMode打开图像。 现在,我需要在collectionView中添加一个按钮,以使用户可以选择视图模式(如上所述),也可以选择模式,用户可以出于其他目的选择多个项目。
我尝试过
allowsMultipleSelection
当用户选择按钮但没有效果时。
如何实现这种功能?
编辑:添加一些示例代码
这是我尝试过的:
//button select mode
@IBAction func Selection(_ sender: Any) {
selectMode = !selectMode
print("select mode is now: \(selectMode)")
if(selectMode){
self.navigationItem.title = "Selection de Photos"
btnSelect.title = "Voir"
collectionView.allowsMultipleSelection=true
}
else{
self.navigationItem.title = "Gallerie"
btnSelect.title = "Selection"
collectionView.allowsMultipleSelection=false
}
}
和didselectitem
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){
if collectionView.allowsMultipleSelection{
print("multi selection mode activated, no preview")
} else{
_selectedCells.add(indexPath)
collectionView.reloadItems(at: [indexPath])
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(!selectMode){
print("View mode")
if(segue.identifier as! String == "viewLargePhoto"){
let controller: ViewPhotoGallerie = segue.destination as! ViewPhotoGallerie
let indexPath: NSIndexPath = self.collectionView.indexPath(for:sender as! UICollectionViewCell) as! NSIndexPath
controller.index = indexPath.item
controller.photosAsset = self.photosAsset
controller.assetCollection = self.assetCollection
}
}
else{
print("Select mode")
}
}
但是如果我处于选择模式(allowsMultipleSelection为false),则将启动预览(segue),并且我无法选择多个项目。
EDIT2:
我已经基于allowMultipleSelection状态更新了代码,仍然打开了以大模式查看图像的序列,然后无法选择多个项目。 这是我的代码:
@IBAction func Selection(_ sender: Any) {
selectMode = !selectMode
print("select mode is now: \(selectMode)")
if(selectMode){
btnSelect.title = "Voir"
collectionView.allowsMultipleSelection=true
}
else{
btnSelect.title = "Selection"
collectionView.allowsMultipleSelection=false
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(!collectionView.allowsMultipleSelection){
print("View mode")
if(segue.identifier as! String == "viewLargePhoto"){
let controller: ViewPhotoGallerie = segue.destination as! ViewPhotoGallerie
let indexPath: NSIndexPath = self.collectionView.indexPath(for:sender as! UICollectionViewCell) as! NSIndexPath
controller.index = indexPath.item
controller.photosAsset = self.photosAsset
controller.assetCollection = self.assetCollection
}
}
else{
print("Select mode")
}
}
答案 0 :(得分:0)
BTW核心基础是
float
按钮时,您需要使用索引数组来显示所选图像。如果您不清楚该过程,请告诉我。
答案 1 :(得分:0)
在选择模式时,您需要将allowsMultipleSelection
设置为true。
self.collectionView.allowsMultipleSelection = true
要管理用于选择和预览的其他操作,您可以使用以下条件进行管理
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
if collectionView.allowsMultipleSelection {
//selection mode
} else {
// vide mode
}
}
完成选择模式后,将allowsMultipleSelection
设置为false。
self.collectionView.allowsMultipleSelection = false
并使用查找所选择的indexPath
。
for indexPath in self.collectionView.indexPathsForSelectedItems! {
}