Если вы можете получить iOS 5 бета, я очень рекомендую это. Новая бета-версия имеет расширение UIViewController
, которое Apple называет контроллерами контейнерного представления. Их очень легко настроить, и я использую один в своем приложении.
Контроллеры контейнерного представления работают как UINavigationControllers
и UITabBarControllers
в том смысле, что они позволяют добавлять дочерние представления контроллеры , а не только дочерние представления. Как я уже сказал, их просто настроить. Я объясню, как:
Создайте новый класс с именем ContainerController
. Добавьте метод инициализации с именем - (id)initWithNavigationController:(UINavigationController *)controller
. Его реализация должна выглядеть примерно так:
if ((self = [super init])) {
[self addChildViewController:controller];
controller.view.frame = CGRectMake(0, 0, 320, 420); // Leave room for the menu at bottom of the screen
[self.view addSubview:controller.view];
}
Причина, по которой мы добавляем контроллер навигации, заключается в том, что он не позволяет этому контроллеру контейнера выполнять переходы, что более сложно.
В методе ContainerController
viewDidLoad
создайте меню:
[super viewDidLoad];
UIView *menuWrapperView = [[[UIView alloc] init] autorelease];
menuWrapperView.frame = CGRectMake(0, 420, 320, 40); // Place a wrapper for the menu buttons directly below the navigation controller
UIButton *button1 = ...;
UIButton *button2 = ...;
[menuWrapperView addSubview:button1];
[menuWrapperView addSubview:button2];
[self.view addSubview:menuWrapperView];
При таком подходе (с использованием дочерних контроллеров представлений) ваши представления и контроллер навигации получат необходимые предупреждения о памяти, загрузку представлений и вызовы методов обработки вращения, когда это необходимо.