单击UITableViewCell时更新标签

时间:2019-05-03 14:39:15

标签: ios swift uitableview

我有一个包含许多表格视图单元格的表格视图。当用户单击某个单元格时,我想更新该单元格的标签文本。

这是我的表视图控制器类:

class MyTableViewController: UITableViewController {
    var data = [Data]()

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self

        // Here I fetch and populate the data list
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellIdentifier = "MyTableViewCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MyTableViewCell else {
            fatalError("The dequeued cell is not an instance of MyTableViewCell.")
        }

        let cellData = data[indexPath.row]

        cell.initialize(data: cellData)

        return cell
    }
}

这是我的表格视图单元格类:

class MyTableViewCell: UITableViewCell {
    var data: Data?

    @IBOutlet weak var nameLabel: UILabel!

    func initialize(data: Data) {
        self.data = data

        if let cellName = data.name {
            nameLabel.text = cellName
        }
    }
}

当用户单击表格视图单元格时,如何更改上面nameLabel的文本(更改为“单击”)?

1 个答案:

答案 0 :(得分:1)

毫无疑问,您可以使用不同的方法来处理此问题,但这是我的建议:

实施UITableViewDelegate方法tableView(_:didSelectRowAt:)tableView(_:didDeselectRowAt:)。将selected布尔值添加到表视图中单元格的数据模型中,并在选定/取消选择单元格时更新该布尔值的状态。

然后修改您的cellForRow(at:)方法,使其使用selected标志来决定在标签中显示什么。

最后,让您的tableView(_:didSelectRowAt:)tableView(_:didDeselectRowAt:)方法告诉表格视图重新加载新选择/取消选择的单元格。