ios - 将数据追加到 UITableView 的正确方法,swift

标签 ios 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”时,我有重复的分隔符,只有当我点击它时才会绘制该行

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

谢谢

谢伊

image where using reloadData image when using 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()
}

关于ios - 将数据追加到 UITableView 的正确方法,swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25513667/

相关文章:

ios - GTM 设置中的 Firebase 和 Legacy iOS 意味着什么

ios - 我在 drawInContext 中的 NSLog 永远不会停止

iphone - 可能不响应+alloc?

ios - 如何为 UI TableView 定义和拉伸(stretch) x 行的行高?

objective-c - NSlogging 和 NSString 难题

ios - 以编程方式呈现没有标识符的 View Controller 会导致黑屏

ios - UITableView 单元格不显示删除菜单

swift - 如何在一系列问题的标签中显示下一个问题

swift - 使用 Realm 保存 viewController 之间的模型状态 - 它会破坏关系

ios - 无法访问 PFRelation 的属性