#ios #swift #scroll #tableview #cell
#iOS #swift #прокрутка #просмотр таблицы #ячейка
Вопрос:
Я использую Swift 3. У меня есть UITableView с 7 строками:
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 удалено).
Ответ №1:
Вам следует обновлять свой источник данных при вставке или удалении любых строк из 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()
}
}