Просто удалите из источника данных и Удалить строку можно сделать, нет необходимости перезагрузить его.
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
machine.formulas.remove(at: indexPath.row)
machine.saveFormulas()
tableView.deleteRows(at: [indexPath], with: .fade)
self.perform(#selector(reloadTable), with: nil, afterDelay: 2)
} else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
@objc func reloadTable() {
self.tableView.reloadData()
}
Попробуйте поделиться результатами.
РЕДАКТИРОВАТЬ:
Вам следует обновить метод cellForRow, чтобы установить значение на основе indexPath, а не от numbersArray
потому что изначально numberArray имеет все 10 значений.
1,2,3,4,5,6,7,8,9,10
Теперь, если вы удалите одну строку из 4-й строки, то это конкретное значение будет удалено из массива и сохранит 9 элементов, то есть 1,2,3,5,6,7,8,9,10 и будет увидеть их в клетках. Вместо этого вы должны обновить свой cellForRow, чтобы он показал indexPath.row + 1 для него.
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = "\(indexPath.row + 1)"
return cell
}
Надеюсь, это прояснится.