Когда я должен использовать UIViewController в программировании IOS? - PullRequest
6 голосов
/ 22 сентября 2010

Я смотрел на API для программирования IOS и читал о контроллерах представления и UIViews.Похоже, что подклассы UIViewController действительно полезны для модальной навигации и пользовательской анимации, но я не вижу других применений, кроме этого.

В чем преимущество использования подклассов UIViewController вместо обычного подкласса NSObject?

Почему

@interface MyViewController : UIViewController {
}

-(void)handleEvent;

@end

Вместо просто

@interface MyViewController : NSObject {
    UIView* view;
}

@property(retain) UIView* view;
-(void)handleEvent;

@end

Разве вы не заканчиваете тем, что просто добавили только представление к окну, а не сам фактический viewController?Для большинства целей, не все ли необходимые функции инкапсулированы в объекте UIView?Вы просто добавляете это так:

[window addSubview:myViewControllerInstance.view]

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

Спасибо.

(Извините, еслиэто глупый вопрос, я изучаю его уже 2 дня)

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Какао в Mac OS и iOS интенсивно использует шаблон Model-View-Controller (MVC).Следуя модели MVC, UIViewController является классом Controller.Его задача - координировать взаимодействие между вашим пользовательским интерфейсом (Просмотр объектов) и данными вашего приложения (Объекты модели).В более общем смысле, контроллер - это прежде всего место, где вы размещаете логику вашего приложения.Он обрабатывает события и вызывает представление и модель соответственно.

См. Справку UIViewController , в которой содержится хороший обзор класса.

Получая урок от UIViewController, вы получаете множество функций контроллера бесплатно, например, загрузкупредставления из Nib-файла (initWithNibName: bundle :) и реагирование на связанные с представлением события (viewWillAppear :, viewWillDisappear :).Кроме того, UIViewController сам по себе является подклассом UIResponder , который содержит функциональные возможности для обработки событий касания (touchesBegan: withEvent, touchesMoved: withEvent, touchesEnded: withEvent).

По сути, нет причин НЕ делатьиспользуйте UIViewController со всеми функциями, которые он предоставляет.Даже если бы вам удалось это сделать, это было бы гораздо больше работы, без реальной выгоды.

0 голосов
/ 22 сентября 2010

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

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