Saya menghadapi masalah berikut: Di VC utama saya memiliki TableView, dan pada pengontrol tampilan kontainer saya memiliki textField. Saya ingin menambahkan setiap teks, saya mengetik di wadah secara otomatis muncul sebagai baris baru di tableView di VC utama
Saat ini saya menggunakan segue untuk mengirim data dari VC utama ke container. Tapi apa yang harus saya terapkan untuk melakukan hal yang sama dalam urutan terbalik? Saya ingin menerapkan delegasi VC utama dalam tampilan kontainer saya, tetapi saya tidak tahu bagaimana melakukannya dengan benar. Atau mungkin ada solusi yang lebih umum.
Bagaimanapun, ini kode saya:
class MessageViewController: UIViewController {
var currentUser: User!
var containerViewController: InputTextViewController?
@IBOutlet weak var enterMessageView: UIView!
@IBOutlet weak var messageTableView: UITableView!
}
extension MessageViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "moveToInputText" {
let connectContainerViewController = segue.destination as? InputTextViewController
containerViewController = connectContainerViewController
containerViewController?.userSendMessageTo = currentUser
}
}
}
extension MessageViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return currentUser.mesaageHistory.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as! ChatMessageTableViewCell
let data = currentUser.mesaageHistory[indexPath.row]
cell.messageLabel.text = data.messageText
return cell
}
}
class InputTextViewController: UIViewController {
@IBOutlet weak var messageTextField: UITextField!
var userSendMessageTo: User!
weak var delegate = MessageViewController()
@IBAction func sendMessge(_ sender: Any) {
handleSend()
userSendMessageTo.mesaageHistory.append(message)
print(userSendMessageTo.mesaageHistory[0].messageText)
let row = userSendMessageTo.mesaageHistory.count - 1
let insertIndexPath = IndexPath(item: row, section: 0)
print(userSendMessageTo.mesaageHistory.count)
delegate?.messageTableView.beginUpdates()
delegate?.messageTableView.insertRows(at: [insertIndexPath], with: UITableViewRowAnimation.automatic)
delegate?.messageTableView.endUpdates()
}
}