Включение режима редактирования в контроллере представления

Можно использовать тот же контроллер представления и чтобы вывести на экран и отредактировать содержание. Когда режим редактирования переключается, Ваш пользовательский контроллер представления выполняет необходимую работу для перехода ее представления от режима отображения до режима редактирования (или наоборот).

Переключение между режимом отображения и режимом редактирования

Чтобы позволить пользовательскому классу контроллера представления использоваться, чтобы и вывести на экран и отредактировать содержание, переопределите setEditing:animated: метод. Когда вызвано, Ваша реализация этого метода должна добавить, скрыться и скорректировать представления контроллера представления для соответствия указанного режима. Например, Вы могли бы хотеть изменить содержание или появление представлений для передачи этого, представление теперь доступно для редактирования. Если Ваш контроллер представления управляет таблицей, можно также вызвать собственную таблицу setEditing:animated: метод для помещения таблицы в надлежащий режим.

Рисунок 12-1 показывает представление из приложения Контактов, поддерживающего оперативное редактирование. Ответвление кнопки Edit в верхнем правом углу говорит контроллеру представления обновлять себя для редактирования; кнопка Done возвращает пользователя режиму отображения. В дополнение к изменению таблицы представление также изменяет содержание представления изображения и представления, выводящего на экран имя пользователя. Это также конфигурирует различные представления и ячейки так, чтобы ответвление их отредактировало их содержание вместо того, чтобы выполнить другие действия.

  Режимы отображения рисунка 12-1 и режимы редактирования представления

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

- (void)setEditing:(BOOL)flag animated:(BOOL)animated
{
    [super setEditing:flag animated:animated];
    if (flag == YES){
        // Change views to edit mode.
    }
    else {
        // Save the changes if needed and change the views to noneditable.
    }
}

Представление редактирования опций пользователю

Общее место, в котором можно использовать доступное для редактирования представление, находится в интерфейсе навигации. Когда доступный для редактирования контроллер представления видим, при реализации интерфейса навигации можно включать специальную кнопку Edit в панель навигации. (Можно получить эту кнопку путем вызова editButtonItem метод Вашего контроллера представления.), Когда коснулись, эта кнопка автоматически переключается между кнопкой Edit и Done и вызывает Ваш контроллер представления setEditing:animated: метод с надлежащими значениями. Можно также вызвать этот метод от собственного кода (или изменить значение контроллера представления editing свойство) для переключения между режимами.

Для получения дополнительной информации о добавлении кнопки Edit к панели навигации, см. Каталог Контроллера Представления для iOS.