私は次のコードを使用して、ユーザーがメッセージを入力して「送信」をクリックするたびに新しいメッセージを追加しています。それは素晴らしい作品です。しかし、問題は、新しいメッセージがテーブルビューの一番上に挿入されることです。私はそれを底に挿入したい。テーブルビューの下部に新しい行を追加する方法 - チャットメッセージ
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var messagesTable: UITableView!
@IBOutlet var messageTextBox: UITextField!
var messageArray = [String]()
@IBAction func sendMessage(sender: AnyObject) {
messageArray.append(messageTextBox.text!)
messagesTable.reloadData()
messageTextBox.text = ""
}
override func viewDidLoad() {
super.viewDidLoad()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messageArray.count
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 80
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//self.messagesTable.contentInset = UIEdgeInsetsMake(messagesTable.frame.height,0,0,0)
let cell = NSBundle.mainBundle().loadNibNamed("AgentMessageText", owner: self, options: nil)?.first as! AgentMessageText
cell.messageText.text = messageArray[indexPath.row]
return cell
}
}
以下のコードは、行を下に挿入します。しかし、新しく挿入された行はビューポイントの下にあります。それは我々がそれを見るためにスクロールする必要が
self.messagesTable.contentInset = UIEdgeInsetsMake(messagesTable.frame.height,0,0,0)
に一つだけ(新しい)メッセージ(セル)を追加することができます私たちのコードはあなたのメッセージが一番上のものではなく一番下に挿入されています。あなたが直面している問題は、それらを見るためにスクロールしなければならないということですね。 –
あなたのmessageArrayにメッセージを追加し、 'insertRowsAtIndexPaths'であなたの行を挿入し、' scrollToRowAtIndexPath'を使って新しく追加されたメッセージにスクロールします。 – NSNoob
また、メッセージがトップに追加される理由について、新しいメッセージのためのデータソース配列。 Inder Kumar Rathoreが述べたように、あなたのセルは、 'cellForRowAtIndexPath'を見て底部に追加すべきではありません。 TableView全体を再読み込みする必要はありません。scrollToRowAtIndexPathを使用して最後の要素までスクロールすることができます。 – NSNoob