Многократное использование UIViewController для модальных и немодальных ситуаций

Короче говоря, Ведущее устройство Толпы ответственно за то, что заставило вещи произойти. И на практике часто имеет место, что Ведущее устройство Толпы является на самом деле скрытым менеджером проектов. По крайней мере, это имеет место в моей компании.

5
задан memmons 30 January 2013 в 16:01
поделиться

3 ответа

Что я делаю (иногда), так это настраиваю перечисление , которое определяет тип контроллера представления.

Например, у вас может быть два типа: тип Edit и тип Add («новый»).

Тип Добавить реализуется через контроллер модального представления, в то время как тип Редактировать помещается в существующий стек навигации.

В контроллере представления -viewDidLoad : , я просто создаю дерево переключатель / регистр , которое устанавливает заголовок и другие характеристики внешнего вида в зависимости от перечисления типов, указанного выше.

Приятная вещь в этом заключается в том, что это легко чтобы добавить новый тип. Обратной стороной является то, что условное дерево для передачи этого перечисления может быстро усложняться, в зависимости от того, насколько разные типы.

Но дерево переключатель / вариант значительно упрощает управление.

Итак, это зависит от того, что вы пытаетесь сделать с двумя типами. Но это определенно выполнимо.

2
ответ дан 14 December 2019 в 04:41
поделиться

Почему бы не использовать подклассы? Сделайте ModalCreateFormController подклассом EditFormController и обработайте модальные элементы в подклассе.

3
ответ дан 14 December 2019 в 04:41
поделиться
​​

Помимо наличия явного свойства в контроллере представления (как предлагает Алекс Рейнольдс), мне на ум приходят два других подхода:

  1. Если у вас есть какой-то вид объект модели, который вы редактируете, спросите его о текущем состоянии. Если он когда-либо был сохранен, значит, вы находитесь в режиме редактирования. В противном случае вы находитесь в режиме создания.

  2. Посмотрите на значение контроллера ' s parentViewController свойство. Если это экземпляр UINavigationController , значит, вы находитесь в стеке навигации. Если вы показываете себя модально, это будет экземпляр вашего контроллера списка.

2
ответ дан 14 December 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: