【问题标题】:Cannot deselect previous programmatically selected row in tableview after another selection再次选择后无法取消选择表格视图中以前以编程方式选择的行
【发布时间】:2017-09-01 12:36:31
【问题描述】:

我在 cellForRowAt 和在初始化 tableview 的同一个函数中都使用了这段代码:

cell.accessoryType = selectedOption == indexPath.row ? .checkmark : .none

并且我的 tableview 自动获得了 selectedOption 的复选标记,但是当我选择另一个选项时,我之前设置的复选标记并没有消失,之后表格上有 2 个复选标记设置为 false。为什么会发生这种情况以及为什么我的第一个复选标记在我选择后没有隐藏?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     if let cell = tableView.cellForRow(at: indexPath) {
                cell.accessoryType = .checkmark
     }
}

【问题讨论】:

    标签: swift3 tableview row programmatically deselect


    【解决方案1】:

    我认为如果你重新加载你的表格视图它会工作,你的代码很好,只需在 didselect 中重新加载你的表格,

    谢谢

    【讨论】:

    • 我在选择之前和之后重新加载它我收到 2 个复选标记,如果它之前,如果它在每次选择之后都是错误的。
    • @ShivamPokhriyal 为什么不呢?无论您的 tableview 需要更新,您都可以调用 reloadData。无论是在 didSelect 还是其他任何操作中都没有关系。
    • 它不会导致任何性能问题。只是想为每次点击表格视图单元格重新加载整个表格视图。如果有 100 个不同类型的单元,我想这可能会产生一些性能问题
    • @ShivamPokhriyal 好吧,在这种情况下,您应该重新加载所需的单元格,仅此而已..
    • 我认为重新加载本身的想法是错误的。应该有更好的方法来实现这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多