gpt4 book ai didi

ios - 在UITableViewCell中选择时更改图像(swift 3 xcode)

转载 作者:行者123 更新时间:2023-12-01 18:40:08 27 4
gpt4 key购买 nike

我的tableViewCell内部有一个imageView,我希望选择时更改其图像。这是我的代码:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let myCell = tableView.cellForRow(at: indexPath) as! TableCell
myCell.resourceIcons.image = UIImage(named: "RubiusResources2")
tableView.deselectRow(at: indexPath, animated: true)

}

该代码有效,但是tableView下方不同部分中的其他一些行似乎也发生了变化。

编辑:

使用下面的注释,我得出以下解决方案:

首先,我创建了一个二维bool数组,以容纳表中的部分和行的数量,并将它们全部设置为false。
var resourceBool = Array(repeating: Array(repeating:false, count:4), count:12)

然后,我创建了一个if语句来检查indexPath处的数组是false还是true。这将是图像状态改变的地方。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let myCell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! TableCell

if (global.resourceBool[indexPath.section][indexPath.row] == false) {
myCell.resourceIcons.image = global.systemResourceImages[0]
} else if (global.resourceBool[indexPath.section][indexPath.row] == true) {
myCell.resourceIcons.image = global.systemResourceImages[1]
}

return myCell
}

然后,在didSelectRow函数中,将indexPath处的数组更改为true并重新加载tableView数据。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
global.resourceBool[indexPath.section][indexPath.row] = true
tableView.reloadData()
tableView.deselectRow(at: indexPath, animated: true)

}

据我了解,对象的状态必须始终在cellForRow中。

最佳答案

解决方案之一是,您需要维护一个单独的所选行列表,并在cellForRowAt方法中进行比较。

代码看起来像这样。

var selectedArray : [IndexPath] = [IndexPath]()

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let myCell = tableView.cellForRow(at: indexPath) as! TableCell
myCell.resourceIcons.image = UIImage(named: "RubiusResources2")
tableView.deselectRow(at: indexPath, animated: true)

if(!selectedArray.contains(indexPath))
{
selectedArray.append(indexPath)
}
else
{
// remove from array here if required
}
}

然后在 cellForRowAt中,编写此代码以设置适当的图像
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
.
.
.

if(selectedArray.contains(indexPath))
{
// use selected image
}
else
{
// use normal image
}

.
.
.
}

关于ios - 在UITableViewCell中选择时更改图像(swift 3 xcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44628612/

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