Контроллеры представления контейнера против сложных иерархий представления - PullRequest
0 голосов
/ 04 января 2012

Это открытый вопрос, касающийся лучших практик при создании сложных иерархий представлений в приложении для iOS. Для целей этого вопроса я определяю сложную иерархию представлений как интегрирующую несколько моделей с несколькими представлениями. Например, на iPad у вас может быть вид слева, который управляет контентом в представлении справа. Каждое представление может иметь несколько элементов (кнопки, представления таблицы, жесты, анимация, поведение и т. Д.).

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

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

Какой подход вы выбрали и почему?

Ответы [ 2 ]

3 голосов
/ 04 января 2012

По умолчанию «Контроллер просмотра контейнера».В моей компании мы говорили: «Делай это просто и глупо».Поэтому я думаю, что лучше всего иметь View, ViewController, Model и DataController.Если каждая функция (в лучшем случае) не длиннее 3 строк кода, а каждая строка не длиннее 80 символов.И класс должен быть не длиннее 400 строк.Так что уверен, что у вас есть все вещи на своем месте, где они принадлежат.Понятно, где что-то сделано.

Также один контроллер делает только одну вещь.Таким образом, NewsletterOrderViewController должен принимать значения только из текстового поля eMail и Name и передавать их в WebServiceController.При этом каждая функция и каждый класс должны быть на одном уровне абстракции.Примером NewsletterOrderViewController является то, что метод, когда кнопка нажимается, вызывает такие функции, как: dataFromForm, sendDataToService.Затем внутри dataFromForm вы можете вызвать stringFromTextField и в этом методе (наконец) [sometextfield getText] ;.Это очень очень простой пример, но я надеюсь, вы понимаете, что я хочу сказать;)

Конечно, все это мое личное мнение ...

1 голос
/ 04 января 2012

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

А что касается вашего комментария о сложности, если вы приложите усилия к тому, чтобы каждое представление было наилучшим или простым, у вас не должно быть лоскутного футляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...