Мой проект содержит таблицу. Это табличное представление состоит из 2 разделов. Первый раздел содержит одну ячейку, которая не редактируется. Второй раздел заполняется массивом данных.
Есть кнопка, которая запускает режим редактирования и позволяет пользователю удалять контент из второго раздела.
Я пытаюсь выйти из режима редактирования, когда второй раздел пуст, чтобы я мог выбрать ячейку в первом разделе (эстетические цели)
Мой код выглядит следующим образом (упрощенный, а не реальный код):
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
data.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
if(data.count==0) {
self.tableView.setEditing(false, animated: true)
self.tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: false, scrollPosition: .top)
}
Это приводит ко всевозможным странным ошибкам. Что, согласно документации, ожидается:
Вы не должны вызывать setEditing: animated: в рамках реализации этого метода. Если по какой-либо причине вы должны вызвать ее после задержки, используя executeSelector: withObject: afterDelay: метод.
Это работает, но я чувствую, что это было бы хакерским решением. Мне не понятно, почему я не должен заканчивать редактирование, когда все удалено. Может кто-нибудь объяснить это? Или, может быть, какие-нибудь альтернативы?