gpt4 book ai didi

swift - 真的不知道如何设置功能以识别是否选择了单元格

转载 作者:行者123 更新时间:2023-12-04 04:13:09 25 4
gpt4 key购买 nike

class ViewController: UICollectionViewController {

var selectedRow : Int?

let data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]

override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(UINib(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier : "MyCell")
}

override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return data.count
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! CollectionViewCell
cell.Label.text = String(data[indexPath.row])
return cell
}}



class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var Label: UILabel!


@IBOutlet weak var button: UIButton!
@IBAction func buttonPressed(_ sender: UIButton) {
if Label.textColor == .red{
Label.textColor = .black
} else if Label.textColor == .black{
Label.textColor = .red
}}


public override func awakeFromNib() {
super.awakeFromNib()}}

我想识别单元格是否被选中。但我真的不知道我必须在哪里使用什么功能。很多人都在说使用 setSelected 函数,但我认为没有这样的函数。我是初学者,所以我不太了解。我想要的是“如果我选择该数字之一,则该单元格的 textColor 变为红色。然后我选择另一个单元格。然后那个单元格的 textColor 变红,原来的变黑。”

我必须使用什么功能以及我必须在哪里使用功能。

最佳答案

有很多方法可以做到,我更喜欢下面的方法。

变化:1

你需要在 UIViewController 中添加 buttonPressed 方法

变化:2

您需要将 UILabel 文本颜色的代码添加到 cellForItemAt 中。

完整代码:

class ViewController: UICollectionViewController {

var selectedRow : Int?

let data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]

override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(UINib(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier : "MyCell")
}

override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return data.count
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! CollectionViewCell

cell.button.tag = indexPath.item
cell.button.addTarget(self, action:#selector(buttonPressed(_:)) , for: .touchUpInside)
cell.Label.text = String(data[indexPath.row])

if selectedRow == indexPath.item{
cell.Label.textColor = .black
}else{
cell.Label.textColor = .red
}
return cell
}

@objc func buttonPressed(_ sender: UIButton) {
if selectedRow == sender.tag{
selectedRow = nil
}else{
selectedRow = sender.tag
}
collectionView.reloadData()
}
}

关于swift - 真的不知道如何设置功能以识别是否选择了单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61338843/

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