這是我的影像結構,是否選擇了影像。
struct TeamSelected {
var logoImage: String
var isImageSelected: Bool }
這是用于檢查選擇的變數
var selection = Set<Int>()
我在 indexpath 方法中用于行的單元格...
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let teamSelection : TeamSelectionCollectionViewCell = self.teamCollectionView.dequeueReusableCell(withReuseIdentifier: "teamCell", for: indexPath) as! TeamSelectionCollectionViewCell
let index = indexPath.row
teamSelection.logoImage.image = UIImage(named: teamSelectionList[index].logoImage)
let isImageSelected = selection.contains(index)
teamSelection.logoButton.isSelected = isImageSelected
teamSelection.logoButton.setImage(
UIImage(named: isImageSelected ? "ic_radio_selected" : "ic_radio_normal"),
for: UIControl.State.normal
)
teamSelection.logoButton.tag = indexPath.row
teamSelection.logoButton.addTarget(self, action: #selector(logoButtonTapped), for: .touchUpInside)
teamSelection.seperatorView.isHidden = indexPath.row == 2 || indexPath.row == self.teamSelectionList.count - 1 ? true : false
return teamSelection
}
這是按鈕目標功能...
@objc func logoButtonTapped(sender: UIButton){
let index = sender.tag
if (selection.contains(index)){
selection.remove(index)
} else {
selection.insert(index)
}
self.teamCollectionView.reloadData()
}[![Here's My simulator Image, As You Can See if select A button another button is not Deselcting.][1]][1]
uj5u.com熱心網友回復:
如果你想只能選擇一個,你基本上可以這樣做:
@objc func logoButtonTapped(sender: UIButton){
let index = sender.tag
selection.removeAll()
selection.append(index)
self.teamCollectionView.reloadData()
}
此條件(selection.contains(index))僅在索引是selection陣列的一部分時有效,因此當您添加新的時,舊的不會洗掉
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/358536.html
標籤:ios 迅速 目标-c 用户界面 uicollectionviewcell
