Короче говоря, Ведущее устройство Толпы ответственно за то, что заставило вещи произойти. И на практике часто имеет место, что Ведущее устройство Толпы является на самом деле скрытым менеджером проектов. По крайней мере, это имеет место в моей компании.
Что я делаю (иногда), так это настраиваю перечисление
, которое определяет тип контроллера представления.
Например, у вас может быть два типа: тип Edit
и тип Add
(«новый»).
Тип Добавить
реализуется через контроллер модального представления, в то время как тип Редактировать
помещается в существующий стек навигации.
В контроллере представления -viewDidLoad :
, я просто создаю дерево переключатель / регистр
, которое устанавливает заголовок и другие характеристики внешнего вида в зависимости от перечисления типов, указанного выше.
Приятная вещь в этом заключается в том, что это легко чтобы добавить новый тип. Обратной стороной является то, что условное дерево для передачи этого перечисления может быстро усложняться, в зависимости от того, насколько разные типы.
Но дерево переключатель / вариант
значительно упрощает управление.
Итак, это зависит от того, что вы пытаетесь сделать с двумя типами. Но это определенно выполнимо.
Почему бы не использовать подклассы? Сделайте ModalCreateFormController
подклассом EditFormController
и обработайте модальные элементы в подклассе.
Помимо наличия явного свойства в контроллере представления (как предлагает Алекс Рейнольдс), мне на ум приходят два других подхода:
Если у вас есть какой-то вид объект модели, который вы редактируете, спросите его о текущем состоянии. Если он когда-либо был сохранен, значит, вы находитесь в режиме редактирования. В противном случае вы находитесь в режиме создания.
Посмотрите на значение контроллера ' s parentViewController
свойство. Если это экземпляр UINavigationController
, значит, вы находитесь в стеке навигации. Если вы показываете себя модально, это будет экземпляр вашего контроллера списка.