以正确的方式将数据追加到UITableView中,swift

我想用两种方法将新数据添加到UITableView

  1. 第一种方法

    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() } 
  2. 第二种方法

     func insertData(appendMessages:[Message]) { for msg in appendMessages { self.messeges.append(msg) } self.tableView.reloadData() } 

你看我有分开的结果。

当使用“reloadData”一切工作正常,但我猜这是不好的,因为我更新所有,而不是新的内容?

当使用“insertRowsAtIndexPaths”我有重复的分隔符,只有当我点击它时,

这很奇怪,我做错了什么…

谢谢

吉文

图像在哪里使用reloadData使用insertRowsAtIndexPaths时的图像

错误的是你应该在0初始化计数器,然后增加它:

 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() }