Я работаю над приложением для iOS, которое использует очень распространенное табличное представление на основе Core Data для отображения элементов, и когда оно выбрано, оно отображает более подробный вид, очень похожий на приложение Contacts. Сам подробный вид представляет собой программно сгенерированную сгруппированную таблицу с настраиваемым (определяемым пером) видом для заголовка, который имеет изображение и имя. Некоторые из ячеек в таблице являются пользовательскими ячейками, которые имеют имя метки и значение текстового поля. В режиме «редактирования» ячейки редактируемой таблицы (и имя в заголовке) имеют .clearButtonMode, установленный в UITextFieldViewModeAlways, чтобы показать, что они доступны для редактирования.
В настоящее время я использую тот же контроллер представления для отображения подробной информации, редактирования информации и добавления новой записи в исходный список.
Когда добавляется новый элемент, контроллер представления создается модально с пользовательской перегрузкой init, которая устанавливает флаг в контроллере представления, чтобы указать, что он добавляет запись. Это позволяет запустить его в режиме редактирования, и если режим редактирования оставлен, вид модели пропадает. Правая кнопка меню - это обычная кнопка Редактировать / Готово, а левая - кнопка отмены. При редактировании существующего элемента левая кнопка (обычная кнопка возврата) заменяется кнопкой отмены.
Я начинаю задумываться о том, стоит ли использовать один контроллер представления для трех разных режимов. Есть несколько вопросов, которые я не знаю, как решить.
1) Как узнать, что режим редактирования оставлен нажатием кнопки «Готово»? Есть ли действие для этого? Если нажата кнопка «Отмена», действие либо отменяет себя (режим добавления), либо восстанавливает предыдущие значения, покидает режим редактирования. Я полагаю, что мог бы поставить проверку в своем переопределении setEditing, чтобы справиться с этим, но, похоже, должен быть лучший способ.
2) При входе в режим редактирования и установке для редактируемых текстовых полей значения UITextFieldViewModeAlways, есть ли способ анимировать внешний вид кнопок «X», чтобы они исчезали вместе с индикаторами редактирования на обычных ячейках?
Существуют ли простые решения этих проблем или мой контроллер просмотра 3-в-1 - плохая идея? Неправильно переделывать одно и то же представление для разных режимов, но наличие нескольких режимов для контроллера представления выглядит немного хлопотно.
Jorj