UITableview reloadRows 在 Swift 3 中无法正常工作

Ami*_*mit 1 uitableview ios swift

我创建了一个UITableView包含两个具有动态单元高度的单元的多个部分。在第二个单元格上添加了一个按钮。单击按钮后,通过更改约束高度来增加第二个单元高度。连接到按钮的操作方法是:

func increaseHeightOnClickOfButton(sender: UIButton) {
    let indexPath = IndexPath(item: 1, section: sender.tag)

    let cell = myTableView.cellForRow(at: indexPath) as! customCell
    cell.viewHeightConstraint.constant = 100

    self.myTableView.reloadRows(at: [indexPath], with: .automatic)
}
Run Code Online (Sandbox Code Playgroud)

问题:单击按钮时,第二部分的单元格高度会增加,而不是第一个部分的高度。

我也尝试过给出这样的部分的固定值:

let indexPath = IndexPath(item: 1, section: 0)
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

仅当我尝试此代码时它才有效:

func increaseHeightOnClickOfButton(sender: UIButton) {
    let indexPath = IndexPath(item: 1, section: sender.tag)

    let cell = myTableView.cellForRow(at: indexPath) as! customCell
    cell.viewHeightConstraint.constant = 100

    self.myTableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)

但我不想重新加载整个表视图。任何人都可以帮助我做错了什么或者有其他方法可以实现它吗?

编辑

我又做了一项更改,删除了:

self.myTableView.reloadRows(at: [indexPath], with: .automatic)
Run Code Online (Sandbox Code Playgroud)

当我开始滚动表格视图时单击按钮后,返回到同一单元格会增加其高度。所以我猜想有一些问题reloadRows

小智 5

您可以使用以下代码重新加载单元格的高度,而无需重新加载整个数据:

tableView.beginUpdates()
tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)