【发布时间】:2019-02-02 16:33:57
【问题描述】:
我正在实现一个显示图像的collectionView,当用户选择其中一个图像时,它会以大模式打开图片。 现在我需要在 collectionView 中添加一个按钮,让用户选择视图模式(如上所述)或选择模式,用户可以选择多个项目用于其他目的。
我试着玩
允许多重选择
当用户选择按钮但没有效果时。
我怎样才能实现这样的功能?
编辑:添加一些示例代码
这是我尝试过的:
//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)并且我无法选择多个项目。
编辑2:
我已经根据allowMultipleSelection 状态更新了我的代码,以大模式查看图像的segue 仍然打开,然后我无法选择多个项目。 这是我的代码:
@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")
}
}
【问题讨论】:
-
你能告诉我们你尝试过的代码吗?
标签: ios swift3 uicollectionview