【发布时间】:2023-03-28 04:26:01
【问题描述】:
我正在制作一个聊天应用程序,我正在尝试让 tableView 滚动到最近发送的消息的底部。
下面是我的协议方法的代码sn-p:
extension ChatViewController: UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messages.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell", for: indexPath) as! MessageCell
cell.message.text = messages[indexPath.row].messageContent
cell.userName.text = messages[indexPath.row].sender
// The method below causes an error that crashes the app at runtime
messageTableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.bottom, animated: true)
最后一行导致以下错误:
Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffee29d4ff8
这似乎表明由无限循环引起的某种溢出(因为消息甚至不会加载到屏幕上)。如果我注释掉 scrollToRow 方法,应用程序运行良好,尽管 tableView 显然不会滚动到最新消息的底部。
你知道是什么原因造成的吗?
【问题讨论】: