Как выбрать код для представления в View против ViewController? - PullRequest
7 голосов
/ 28 июня 2009

В Xcode шаблон приложения-утилиты создает проект с:

MainView, MainViewController

и

FlipsideView, FlipsideViewController

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

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

Есть ли эмпирическое правило, которое нужно соблюдать при принятии решения о том, куда поместить большую часть моей функциональности?

Ответы [ 3 ]

2 голосов
/ 28 июня 2009

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

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

2 голосов
/ 28 июня 2009

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

Но все-таки можно поместить некоторую логику приложения в представление, если вы едины во всем приложении.

1 голос
/ 28 июня 2009

В StackOverflow уже есть несколько вопросов, касающихся model-view-controller. Например, см. Что входит в «Контроллер» в «MVC»? .

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

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