isEditing属性更改时如何更新UITableView?

时间:2019-04-01 17:22:16

标签: swift uitableview

我目前有一个TableViewController,它的导航栏带有editButtonItem。当我按下此按钮时,我的tableview正确进入编辑模式,但是当isEditing更改时,我想更改自定义UITableViewCell上的标签。我尝试将以下内容添加到cellForRowAt中:

   if editingMode {
        cell.timeZoneLabel = ""
    } else {
        cell.timeZoneLabel = timeZone.city
    }

但是当isEditing更改时,似乎没有重新加载tableView。

我的下一个想法是在开始时设置以下变量:

var editingMode = false {
    didSet {
        tableView.reloadData()
    }
}

并将以下内容添加到viewDidLoad()中,以便在isEditing更改时可以重新加载tableView:

    editingMode = isEditing

这似乎也不起作用。我曾尝试寻找其他解决方案,但找不到任何遇到类似问题的人。

任何指导将不胜感激!

1 个答案:

答案 0 :(得分:0)

在单元格中覆盖didTransition(torawValue 0代表正常状态,rawValue 1代表showingEditControl

override func didTransition(to state: UITableViewCell.StateMask) {
    switch state.rawValue {
    case 0: timeZoneLabel = timeZone.city
    case 1: timeZoneLabel = ""
    default: break
    }
}