Мне нужно создать контроллер класса для управления поведением пользовательского представления, которое я создал.Стандартный подход заключается в создании подкласса UIViewController, но в моем случае я вместо этого решил подклассировать NSObject, по существу, по трем причинам:
- мое представление должно быть добавлено как небольшое подпредставление контроллера основного представления (оно будетне будет отображаться с использованием чего-то вроде presentModalViewController или pushViewController ...), и для него не требуется никакой панели инструментов или элемента управления навигацией внутри него
- Скорее всего, мой контроллер не нужно будет уведомлять об ориентации устройства, потому что его видбудет всегда использоваться в портретном формате, поэтому мне не интересно получать обычные сообщения поворота willRotateToInterfaceOrientation и т. д. *
- Мне нужно, чтобы этот класс был как можно более легким, сводя к минимуму потребление памяти.Отсутствие подклассов UIViewController имеет преимущество в получении более легкого класса без набора методов, которые мне никогда не понадобятся
Интерфейс моего контроллера довольно прост, пример:
@interface MyScrollTabBarController : NSObject <MyTabBarViewDelegate> { }
/**
* The view is created internally by the controller and the client class
* can access to it in readonly mode
*/
@property (nonatomic, readonly) UIView *view;
/**
* A Property to change the view appearance
*/
@property (nonatomic, assign) MyScrollTabBarViewState viewState;
/**
* Others properties used to construct the view's subviews
*/
@property (nonatomic, retain) Location *rootLocation;
@property (nonatomic, readonly, retain) Place *place;
/**
* Designated initializer
*/
- (id)initWithPlace:(Place *)aPlace;
- (void)setRootLocation:(Location *)location animated:(BOOL)animated;
@end
Чтобы отобразить его внутренний вид из родительского контроллера представления, я буду использовать что-то вроде этого:
tabBarController = [[MyScrollTabBarController alloc] initWithPlace:aPlace];
tabBarController.viewState = MyScrollTabBarViewStateXX;
tabBarController.view.frame = CGRectMake(...);
[self.view addSubview:tabBarController.view];
Я хотел бы знать, что вы думаете о моем выборе, если вы думаете, что может бытьнедостатки и то, что вы обычно делаете, когда вам нужно написать контроллер для представления, которое не является полноэкранным, как у меня.
Спасибо