TableViewの上部に更新データを追加した場合、indexPathが全てズレるので、追加する前まで見ていたセルが下に押し下げられてしまいます。
そうではなく、上に追加しても見ていたセルが移動しないようにするには、たとえば以下のようにします。
let before = messageTableView.contentSize.height self.messageTableView.reloadData() let after = messageTableView.contentSize.height if(before<after) { self.messageTableView.contentOffset.y = after - before }