快速将数据附加到 UITableView 的正确方法 [英] correct way to append data into UITableView, swift
本文介绍了快速将数据附加到 UITableView 的正确方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用两种方式将新数据添加到 UITableView
I am trying to add new data to a UITableView using two ways
第一种方式
func insertData(appendMessages:[Message]) {
var currentCount = self.messeges.count;
var indxesPath:[NSIndexPath] = [NSIndexPath]()
for msg in appendMessages {
indxesPath.append(NSIndexPath(forRow:currentCount,inSection:0));
self.messeges.append(msg)
currentCount++
}
self.tableView.beginUpdates()
self.tableView.insertRowsAtIndexPaths(indxesPath, withRowAnimation: UITableViewRowAnimation.Bottom)
self.tableView.endUpdates()
}
第二种方式
func insertData(appendMessages:[Message]) {
for msg in appendMessages {
self.messeges.append(msg)
}
self.tableView.reloadData()
}
你看我有分离的结果.
使用reloadData"时一切正常,但我想这不太好,因为我要更新所有内容而不是新内容?
When using "reloadData" all is working fine, but I guess this is not good cause I am updating all and not new content?
当使用insertRowsAtIndexPaths"时,我有重复的分隔符,只有当我点击它时才会绘制行
When using "insertRowsAtIndexPaths" I have duplicated separator and the row is painted only when I am clicking on it
这很奇怪,我做错了什么......
This is weird, what I am doing wrong...
谢谢
谢伊
推荐答案
错误是你应该将计数器初始化为 0 然后增加它:
Error is that you should initialise the counter at 0 then increase it:
func insertData(appendMessages:[Message]) {
var currentCount = 0
var indexesPath = [NSIndexPath]()
for _ in appendMessages {
let index = let index = NSIndexPath(forRow: i, inSection: 0)
indexesPath.append(index)
currentCount++
}
self.tableView.beginUpdates()
self.tableView.insertRowsAtIndexPaths(indexesPath, withRowAnimation: UITableViewRowAnimation.Bottom)
self.tableView.endUpdates()
}
这篇关于快速将数据附加到 UITableView 的正确方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文