Header Swift 中 UITableView 的单元格

Header Cell of UITableView in Swift

我正在使用带有 header 的 UITableView。对于 header,我使用 viewForHeaderInSection。我的 header 单元格中有一个标签和一个按钮。我还有一个数组来为我的 headerViewCell 的标签命名。我的数组是

let cellArray = ["Cat", "Dog", "Mouse", "Girraffe", "Zebra"]  

我正在为 headerViewCell 的按钮添加一个 @objc 函数并使用该按钮的标签。

这是我的代码:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    let headerView = tableView.dequeueReusableCell(withIdentifier: "HeaderTableViewCell") as! HeaderTableViewCell

    headerView.cellLabel.text = self.cellArray[section]
    headerView.cellButton.tag = section
    headerView.cellButton.addTarget(self, action: #selector(expandRow(sender:)), for: .touchUpInside)

    return headerView
}

我的问题是我想更改所选单元格的 @objc func 中的 cellLabel。假设我点击第一个单元格,我想更改第一个单元格 标签名称 但不知道该怎么做。

如果我们使用行而不是 headers,这很容易,因为行有 cellForRowAt。但我无法访问所选 header 单元格。

有人有解决办法吗?

cellArray设为var

var cellArray = ["Cat", "Dog", "Mouse", "Girraffe", "Zebra"]  

然后在@objc函数里面改变模型

cellArray[tag] = //// new content
tableView.reloadData()
@IBAction func expandRow(_ sender: UIButton)
{
    cellArray[sender.tag] = "new value"
    tableView.reloadData()
}

我自己得到了答案。这就是我在 @objc func:

中所做的

let cell = tableView.cellForRow(at: sender.section) as? HeaderTableViewCell

cell.cellLabel.text = "monkey"