将数据附加到UITableView的正确方法,swift

时间:2014-08-26 19:23:17

标签: 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()
    }
    
  3. 你看我分开了结果。

    使用" reloadData"一切正常,但我想这不好,因为我正在更新所有而不是新内容?

    使用" insertRowsAtIndexPaths"我有重复的分隔符,只有当我点击它时才会绘制该行

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

    谢谢

    谢伊

    image where using reloadData image when using insertRowsAtIndexPaths

1 个答案:

答案 0 :(得分:-1)

错误是您应该将计数器初始化为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()
}