Переместите вызов на stringArray.insert...
, чтобы быть после вызова на beginUpdates
. Проблема с тем, что он был раньше, состоит в том, что beginUpdates
считает, что модель данных уже обновлена до настоящего времени, но таблице еще не сообщили об обновлении.
Другой вариант - удалить звонки на begin/endUpdates
. Они не нужны в этом случае.
Помимо внесения одного из этих изменений, вы также должны понимать, что вы добавляете два значения в модель данных, но вы только сообщаете табличному представлению, что вставляете одну строку. Вам нужен индексный путь для обеих строк и вставьте оба, чтобы соответствовать двум объектам, добавленным в массив.
Поскольку вы хотите вставить две новые строки между двумя существующими строками, вам необходимо:
let additionItems = ["B","C"]
let indexPathB = IndexPath(row: 1, section: 0)
let indexPathC = IndexPath(row: 2, section: 0)
stringArray.insert(contentsOf: additionItems, at: 1)
tableView.insertRows(at: [indexPathB, indexPathC], with: .automatic)
Обратите внимание на изменение индекса при вставке элементов в stringArray
и необходимость двух соответствующих путей индекса.