我使用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()
}
}