我使用Swift 3。
我有7行的UITableView:

override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.delegate = self
        self.tableView.dataSource = self
}

func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int
    {
        return 7
    }

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    if (IndexPath.row == 6)
    {
        tableView.beginUpdates()
        var index = IndexPath(row: 7, section: 0)
        tableView.insertRows(at: [index], with: UITableViewRowAnimation.automatic)
        tableView.endUpdates()
    }
}

当我滚动到表中的最后一个单元格时,我想添加其他单元格。
但是我得到了这个错误:

无效的更新:第0部分中的行数无效。
更新(7)之后包含在现有节中的行必须是
等于该部分之前包含的行数
更新(7),加上或减去从中插入或删除的行数
该部分(插入了1个,删除了0个),加上或减去了
行移入或移出该部分(移入0,移出0)。

最佳答案

当您从tableView插入或删除任何行时,应该更新数据源,以使对象数保持等于tableView中的行数

func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int {
    return dataSource.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if (IndexPath.row == 6) {
        tableView.beginUpdates()
        var index = IndexPath(row: 7, section: 0)
        let newObject = // create new model object here
        dataSource.insert(newObject, at: 7)
        tableView.insertRows(at: [index], with: UITableViewRowAnimation.automatic)
        tableView.endUpdates()
    }
}

07-24 13:48