我试图在tableview单元格上显示复选标记,但复选标记有时会出现,当我滚动时它会消失。
代码下方:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("vvxxx12", forIndexPath: indexPath)
// Configure the cell...
cell.textLabel?.text = self.dataArray[indexPath.row] as? String //in dataArray values are stored
if dataArray.containsObject(indexPath)
{
cell.accessoryType = .Checkmark
}
else {
cell.accessoryType = .None
}
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
if cell.accessoryType == .Checkmark {
cell.accessoryType = .None
} else {
cell.accessoryType = .Checkmark
}
}
}

答案 0 :(得分:2)
答案 1 :(得分:1)
对于Swift 3,以下为我工作
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
yourtableView.cellForRow(at: indexPath as IndexPath)?.accessoryType = .checkmark
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
yourtableView.cellForRow(at: indexPath as IndexPath)?.accessoryType = .none
}
答案 2 :(得分:0)
cell.textLabel?.text = self.dataArray[indexPath.row] as? String
这表明dataArray
包含字符串。
if dataArray.containsObject(indexPath)
这表明dataArray
包含索引路径。这两个都不应该是真的。一个用于数据的数组是有意义的,另一个用于检查所选行或行的数组也是有意义的,但两者的数组不同。
可能发生的事情是:
dataArray
都不会包含索引路径,因此附件始终被清除。您需要在选择行时更新模型,存储所选行的索引路径或更新模型对象上的选定标志。