我有一个从实时数据库接收数据的表视图。这些数据是从表格视图底部添加的,所以此表格视图必须向下滚动以显示新数据。在swift中向下滚动tableView?
我发现了一个方法来做到这一点,但我不满意,因为滚动总是从列表的顶部开始。不是很漂亮。
下面是这个方法的代码:
func tableViewScrollToBottom(animated: Bool) {
let delay = 0.1 * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue(), {
let numberOfSections = self.clientTable.numberOfSections
let numberOfRows = self.clientTable.numberOfRowsInSection(numberOfSections-1)
if numberOfRows > 0 {
let indexPath = NSIndexPath(forRow: numberOfRows-1, inSection: (numberOfSections-1))
self.clientTable.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Bottom, animated: animated)
}
})
}`
有以只从原来的位置滚动修改该法的方式进行?
这个问题真的出现在滚动逻辑中吗?或者在你调用这个之前你正在做一个'reloadData'?调用'reloadData'将始终滚动到顶部。如果可以的话,为所添加的行执行'reloadRowsAtIndexPaths'将防止滚动到顶部。 – Rob
确实你是对的我做一个reloadData。我正在尝试reloadRowsAtIndexPaths,但暂时不起作用。 –
其实我注意到,即使我删除reloadData,当我插入一行时,表视图向上滚动。这有什么理由吗? –