Я пытаюсь создать базовое навигационное приложение, используя UINavigationController в качестве корневого контейнера для других внутренних представлений UIViewController. Я уже достиг аналогичной функциональности с общей панелью инструментов. Мне интересно, это хороший подход, потому что панель инструментов и ее элементы перерисовываются (я думаю?) На каждом внутреннем представлении. Итак, вот некоторые детали моего существующего кода. В моем основном файле реализации MultiviewAppDelegate.m в методе didFinishLaunchingWithOptions я инициализирую UINavigationController, затем инициализирую первое внутреннее представление (UIViewController) и затем добавляю его представление в UINavigationController.
UINavigationController *nc = [[UINavigationController alloc] init];
[self.window addSubview:nc.view];
...
FirstView *v1 = [[FirstView alloc] init];
[nc pushViewController:v1 animated:NO];
[nc setToolbarHidden:NO];
...
Все другие внутренние представления (например, FirstView) расширяют класс BaseViewController (BaseViewController расширяет UIViewController), потому что в моем BaseViewController я реализовал общую панель инструментов, которую я хочу видеть во внутренних представлениях. Итак, в методе viewDidLoad класса BaseViewController я делаю создание этой панели инструментов:
- (void)viewDidLoad {
UIBarButtonItem *firstViewBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"FirstView" style:UIBarButtonItemStyleBordered target:self action:@selector(showFirstView)];
UIBarButtonItem *secondViewBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"SecondView" style:UIBarButtonItemStyleBordered target:self action:@selector(showSecondView)];
...
NSArray *items = [NSArray arrayWithObjects:firstViewBtnItem, secondViewBtnItem, ..., nil];
[firstViewBtnItem release];
[secondViewBtnItem release];
[self setToolbarItems:items];
...
Дело в том, что я не уверен, хорошо ли перерисовывать панель инструментов каждый раз, когда появляется каждый новый внутренний вид. Так что я не уверен, что будет правильным решением сделать то же самое с фоном. Или, может быть, я хочу слишком много:)