Вы можете делать что хотите, но вам нужно, чтобы ваш источник данных соответствовал таблице. Другими словами, когда таблица перезагружается, tableView:cellForRowAtIndexPath
и другие методы UITableViewDataSource
и UITableViewDelegate
, отвечающие за построение таблицы, должны возвращать те же ячейки в зависимости от состояния редактирования, которое вы добавляете / удаляете в setEditing:antimated:
.
Итак, когда вы вставляете / удаляете ячейку в setEditing:animated:
, вам также необходимо убедиться, что ваш источник данных отражает те же изменения. Это может быть непросто, если вы добавляете специальную ячейку в начало раздела, но остальные данные поступают из массива. Один из способов сделать это - перезагрузить таблицу, при редактировании сделать строку 0 добавляемой ячейкой и использовать строку-1 для индекса массива для последующих ячеек. Если вы сделаете это, вам также нужно добавить один к tableView:numberOfRowsInSection:
, чтобы учесть дополнительную ячейку.
Другим способом было бы иметь раздел для ячейки добавления, в котором было бы 0 строк, если они не редактируются, в противном случае - 1 строка, и вы возвращаете соответствующую ячейку. Это также потребует от вас соответствующей настройки таблицы и ячеек в зависимости от того, как вы хотите, чтобы все выглядело.