UITableView在单元格高度更改时更改滚动位置

时间:2018-11-29 12:35:11

标签: ios swift uitableview

我有一个tableView,当用户点击单元格时,它会扩展单元格的高度。问题在于某些单元格在扩展单元格高度tableView后滚动到非常高或更低的selectedCell,我是说它错过了当前单元格位置

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if cellsMode[indexPath.row] {
        return 344
    }
else {
        return 140 }
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    self.cellsMode[indexPath.row] = !self.cellsMode[indexPath.row] 
    table.reloadData() 
} 

我尝试使用

let indexPath = NSIndexPath(row: cellInex, section: 0)
self.table.scrollToRow(at: indexPath as IndexPath, at: .bottom, animated: false) 

但不起作用。 我该如何解决?

1 个答案:

答案 0 :(得分:2)

只是重新加载单元格而不是整个表格视图,就像下面这样:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    self.cellsMode[indexPath.row] = !self.cellsMode[indexPath.row] 
    tableView.reloadRows(at: [indexPath], with: .automatic)
}