我想更改自定义UITableViewCell
中的图片,具体取决于是否已选中。
因此,当用户选择一行时,必须更改两行中的图像(当前选择的图像和要选择的图像)。
从reloadData
拨打reloadRowsAtIndexPaths
或didSelectRowAtIndexPath
并不起作用,因为它会取消选择当前所选行,而我不想这样做。
从reloadData
和willDeselectRowAtIndexPath
拨打willSelectRowAtIndexPath
也会导致同样的问题。
有人知道解决方案吗?
答案 0 :(得分:0)
您是否尝试过根据指示所选行的存储属性以编程方式选择cellForRowAtIndexPath
中的行?
我会采用reloadData
或reloadRowsAtIndexPaths
didSelectRowAtIndexPath
的方法,但首先将所选行保存在属性中,以便您可以在单元格中手动将其设置为选中状态正在重新绘制。
例如:
var selectedRow:NSIndexPath? = nil
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedRow = indexPath
tableView.reloadData() // or reload a specific row
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("TableViewCellReuseIdentifier")
if (indexPath == selectedRow) {
cell!.selected = true
} else {
cell!.selected = false
}
}