删除最后一个单元格后阻止uitableview滚动

时间:2017-07-06 15:59:29

标签: ios uitableview

我有一个tableview(样式 - 分组),其中包含的行数多于可以放入其框架中的行数,因此您必须滚动才能看到最后一行。当我删除最后一行时,tableview将其内容向下滚动,以便新的最后一行位于框架的底部(填充空白区域的类型)。

在删除UITableView中的最后一行后,如何防止UITableView滚动?我希望它保留空白区域,不要自动滚动。

我试图设置内容插入但不幸的是它似乎没有阻止滚动。

编辑:我删除行的代码:

func removeLastRow() {
    let indexPath = IndexPath.init(row: self.messages.count - 1, section: 0)

    self.messages.removeLast()
    CATransaction.begin()
    self.tableView.beginUpdates()
    CATransaction.setCompletionBlock { () -> Void in
       // do stuff, add new rows
    }
    self.tableView.deleteRows(at: [indexPath], with: .left)
    self.tableView.endUpdates()
    CATransaction.commit()
}

1 个答案:

答案 0 :(得分:0)

通过调用tableView:heightForRowAt:在删除之前检索单元格大小,删除后,手动将表格视图的垂直内容偏移设置为当前垂直内容偏移量加上单元格的高度。

let deletedCellHeight = tableView.heightForRowAt(indexPath)

然后:

tableView.contentOffset.x += deletedCellHeight