即时消息建立与Firebase的聊天应用程序,我有一个问题是在reloadData()将滚动顶部。禁用滚动到顶部
我该如何禁用?
这是我的代码
func retrieveDataFromFirebase(){
FIRDatabase.database().reference().child("share").child("post").observe(.value) { (snapshot:FIRDataSnapshot) in
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot]{
self.key.removeAll()
self.users.removeAll()
for snap in snapshots{
self.key.append(snap.key)
if let dic = snap.value as? [String:AnyObject]{
let msg = Message()
msg.setValuesForKeys(dic)
self.users.append(msg)
}
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
}
首先,删除DispatchQueue,因为它不需要。其次,在重新加载tableView之前,获取它当前的滚动位置。该属性/值将根据行的高度是否相同而不同,因此有两种方法可以完成。重新加载tableView之后。回滚到那个位置,只要它仍在范围内。请参阅[获取滚动位置](http://stackoverflow.com/questions/2795900/how-can-i-get-the-uitableview-scroll-position-so-i-can-save-it) – Jay