Использование того же контроллера представления для добавления, отображения и редактирования

Я работаю над приложением для iOS, которое использует очень распространенное табличное представление на основе Core Data для отображения элементов, и при выборе одного из них отображается более подробное представление, очень похожее на приложение «Контакты». Само подробное представление представляет собой программно созданную сгруппированную таблицу с настраиваемым (определяемым пером) представлением для заголовка, имеющего изображение и имя. Некоторые из ячеек в таблице являются настраиваемыми ячейками, у которых есть имя метки и значение текстового поля. В режиме «редактирования» для редактируемых ячеек таблицы (и имени в заголовке) .clearButtonMode установлено в UITextFieldViewModeAlways, чтобы показать, что они доступны для редактирования.

В настоящее время я использую тот же контроллер представления для отображения подробной информации, редактирования информации и добавления новой записи в исходный список.

Когда добавляется новый элемент, контроллер представления создается модально с настраиваемой перегрузкой init, которая устанавливает флаг в контроллере представления, чтобы указать, что он добавляет запись. Это позволяет ему запускаться в режиме редактирования, и если из режима редактирования выйти, вид модели будет удален. Правая кнопка меню - это обычная кнопка Edit / Done, а левая - кнопка отмены. Когда существующий элемент редактируется, левая кнопка (обычная кнопка возврата) заменяется кнопкой отмены.

Я начинаю задумываться о том, может ли один контроллер представления обрабатывать три разных режима способ идти. Есть несколько проблем, с которыми я не уверен, как решить.

1) Как мне узнать, вышел ли из режима редактирования, нажав «Готово»? Есть ли за это действие? Если нажата отмена, действие либо закрывается (режим добавления), либо восстанавливает предыдущие значения, выходит из режима редактирования. Я полагаю, что мог бы поставить галочку в моем переопределении setEditing, чтобы справиться с этим, но кажется, что должен быть лучший способ.

2) Когда входит режим редактирования, и я устанавливаю редактируемые текстовые поля на UITextFieldViewModeAlways, есть ли способ чтобы оживить появление кнопок «X» так, чтобы они исчезали вместе с индикаторами редактирования на обычных ячейках?

Есть ли простые решения этих проблем или мой контроллер представления 3-в-1 - плохая идея? Не кажется правильным переделывать одно и то же представление для разных режимов, но наличие нескольких режимов для контроллера представления - это немного хлопотно.

jorj

5
задан 11 April 2011 в 02:10
поделиться