gpt4 book ai didi

ios - 收到新消息时如何平滑更新聊天 View

转载 作者:行者123 更新时间:2023-11-30 12:17:03 24 4
gpt4 key购买 nike

我对我的聊天应用程序有疑问。
我对与他人聊天有自己的看法。

chat view like this.

但是当其他人向我发送消息时,我应该更新我的 View 以让用户知道新的消息文本,我还将消息保存在我的 sqlite 中。
当用户收到消息时,我会更新主线程中的 View 。
它使 View 暂时锁定,并且我想向我的聊天目标发送消息,我应该等待 View 更新结束。
一般来说,如何处理更新聊天 View ?
谢谢。

import UIKit
import RxCocoa
import RxSwift
class ViewController: UIViewController {

var subscribe:Disposable?
var texts:[Message] = [Message]()

override func viewDidLoad() {
super.viewDidLoad()

self.subscribe = chatroom.PublishSubject<Any>().subscribe({ json in

DispatchQueue.main.async {
self.loadTexts()
}
})
}


func loadTexts() {

self.texts.removeAll(keepingCapacity: false)
self.chatroom.messages.forEach({ (id,message) in
self.texts.append(message)
})

self.texts.sort(by: { (a,b) in
a.time < b.time
})

self.tableView.reloadData()
//updateViewFrame()
if self.texts.count > 0 {
self.tableView.scrollToRow(at: IndexPath.init(row: self.texts.count-1,section: 0), at: .bottom, animated: false)
}

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return texts.count
}

}

最佳答案

所有与 UI 相关的工作必须始终在主线程中运行。

DispatchQueue.global().async() {
print("Work Dispatched")
// Do heavy or time consuming work

// Then return the work on the main thread and update the UI
DispatchQueue.main.async() {
// Return data and update on the main thread, all UI calls should be on the main thread
self.tableView.reloadData()
}
}

关于ios - 收到新消息时如何平滑更新聊天 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45292767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com