Зачем использовать ViewController для управления ViewControllers, а не только ApplicationDelegate - PullRequest
2 голосов
/ 22 июня 2011

Если у меня есть группа ViewController, которые когда-либо будут иметь дело только с одним представлением, или даже если мой ViewController будет иметь дело с несколькими представлениями, зачем мне использовать другие ViewController для управления другими ViewControllers?Почему бы мне просто не поменять ViewController на уровне ApplicationDelegate?

Может быть, я думаю о ViewController неправильно?Я привык писать в шаблоне MVC с Ruby / .NET.Например, если бы я работал с виджетами, у меня, вероятно, были бы WidgetController и представление List, а также представление Detail для WidgetController.

Какова аналогичная конструкция iPhone MVC?Я бы предположил, что WidgetController будет наследовать ViewController, и у меня будет пара разных представлений в зависимости от того, как я хочу посмотреть на данные виджета.Затем, когда я захотел разобраться с Wodgits, я бы сделал WodgitController со связанными с ним представлениями и обменял подпредставление окна новым Wodgit ViewController.

Я не вижу, что такое RootViewController для управления моими контроллерамипокупает меняГде стоимость?Чего мне не хватает?

1 Ответ

6 голосов
/ 22 июня 2011

Я сосредоточусь на одном аспекте: Компартментализация - очень полезный принцип проектирования. Если вы разделите проблемы и поместите вещи в то место, где они «принадлежат», их будет легче найти, поддерживать, развиватьи выбирайте новые цели.

Учтите это:

Все трубы в вашем доме идут в одно и то же место.Мочитесь ли вы в своем приемнике или используете приспособление, предназначенное для этой цели?

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

Зачем мочиться в раковину, когда в шаге от туалета?

...