我有关于tableView的问题。我正在快速开发一个关于聊天模块的项目。我从Web服务获取数据。第一次加载视图时,我的聊天单元格看起来很完美。但是当我发送消息或滚动表格时,值会发生变化或丢失。任何人都可以帮我这个。我坚持这个问题很长一段时间。
答案 0 :(得分:1)
我有关于tableView的回答。 SCNR
您需要跟踪tableView的dataSource
以及tableView本身的数据更改。
修改强>: 假设您的聊天数据是一个字符串数组,按日期排序,最新消息排在最前面,插入数据时,您应该
tableView?.beginUpdates() // signal the tableview a pending update
data.insert(newMessage, atIndex:0) // modify your dataSource's data
tableView?.insertRowsAtIndexPaths([NSIndexPath(0, inSection: 0)], withRowAnimation: .Automatic) // insert the new row in the tableView
tableView?.endUpdates() // commit changes
答案 1 :(得分:0)
您的数据源应该与tableView索引协调.i.e应该有一个规则来计算应该显示的消息和tableView的IndexPath。最简单的规则是以下假设您的tableView只包含1个部分,dataSource中的indexOf消息应该等于IndexPath.Row。例如,您正在发送一条新消息,该消息应添加到tableView的底部
dataSource.append(newMessage)
tableView.insertRowsAtIndexPaths([NSIndexPath(0, inSection: 0)], withRowAnimation: .Automatic)
并在您的cellForRowAtIndexPath委托方法
中let message = dataSource[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier("MessageCell", forIndexPath: indexPath)
// then use the message to populate the cell then return cell
return cell