2017-01-22 252 views
0

即時消息建立與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() 
      } 
     } 
    } 
} 
+1

首先,刪除DispatchQueue,因爲它不需要。其次,在重新加載tableView之前,獲取它當前的滾動位置。該屬性/值將根據行的高度是否相同而不同,因此有兩種方法可以完成。重新加載tableView之後。回滾到那個位置,只要它仍在範圍內。請參閱[獲取滾動位置](http://stackoverflow.com/questions/2795900/how-can-i-get-the-uitableview-scroll-position-so-i-can-save-it) – Jay

回答

0

嘗試滾動你的tableview去年指數。

let lastCellIndexPath = NSIndexPath(forRow: yourArray.count-1, inSection: 0) 
self.tableView.scrollToRowAtIndexPath(lastCellIndexPath, atScrollPosition: .Bottom, animated: false)