表视图单元附件在视野外时不会改变

时间:2016-05-16 03:11:57

标签: swift

我有这段代码:

rails_stdout_logging

我允许我在我选择的单元格上打勾并删除之前的复选标记。我遇到的问题是,如果列表很大并且单元格不在视图中,则在选择新单元格时不会删除复选标记。

我尝试添加tableview.reloaddata(),但没有做任何事。

思想?

1 个答案:

答案 0 :(得分:0)

对于不可见的单元格,

cellForRowAtIndexPath会返回nil

要获得类似效果的单选按钮,您需要执行以下操作:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    configureCell(cell, atIndexPath: indexPath)
    return cell
}

func configureCell(cell: UITableViewCell, atIndexPath indexPath: NSIndexPath) {
    if indexPath == selectedIndexPath {
        cell.accessoryType = .Checkmark
    } else {
        cell.accessoryType = .None
    }
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    selectedIndexPath = indexPath

    // Note indexPathsForVisibleRows may be nil depending on your app's content.
    // zip just joins two arrays together, into a single array of tuples.
    zip(tableView.indexPathsForVisibleRows!, tableView.visibleCells).forEach({ indexPath, cell in
        configureCell(cell, atIndexPath: indexPath)
    })
}