UINavigation контроллер с нижней панелью инструментов теряет UIBarButtonItems при переключении вида
У меня есть контроллер навигации, созданный программно для обработки переключения между представлениями UISegmentedControl. (называемый сегменты NavigationController)
Контроллер навигации имеет нижнюю панель инструментов с парой UIBarButtonItems, которые также были добавлены программно. Чтобы справиться с переключателем, у меня есть следующий фрагмент кода:
- (void)indexDidChangeForSegmentedControl:(UISegmentedControl *) aSegmentedControl {
NSUInteger index = aSegmentedControl.selectedSegmentIndex;
if( index == 0 ) {
OneViewController *oneViewController = nil;
if( (oneViewController = [self.viewControllers objectForKey:@"one"]) == nil ) {
oneViewController = [[OneViewController alloc] init];
[self.viewControllers setObject:oneViewController forKey:@"one"];
[oneViewController release];
}
NSArray *theViewControllers = [NSArray arrayWithObject:oneViewController];
[self.segmentsNavigationController setViewControllers:theViewControllers animated:YES];
}
else if( index == 1 ) {
TwoViewController *twoViewController = nil;
if( (twoViewController = [self.viewControllers objectForKey:@"two"]) == nil ) {
twoViewController = [[RelatedArticlesViewController alloc] init];
[self.viewControllers setObject:twoViewController forKey:@"two"];
twoViewController.hidesBottomBarWhenPushed = YES;
[twoViewController release];
}
NSArray *theViewControllers = [NSArray arrayWithObject:twoViewController];
[self.segmentsNavigationController setViewControllers:theViewControllers animated:YES];
}
}
Так что в конечном итоге, когда я переключаюсь с одного вида на другой и обратно, все мои UIBarButtons в нижней панели контроллера навигации теряются. Это почему? Я делаю что-то неправильно?
1 ответ
После некоторых поисков я понял, что использую UINavigationController неправильно.
Панель инструментов контроллера навигации является частью навигационного представления, отображаемого внутри, а не родительского элемента. (Мне потребовалось некоторое время, чтобы понять это!) Я создавал кнопки в том же контроллере, в котором я создавал сегменты NavigationController, а не внутри oneViewController, где я должен был располагать.
Перемещение кода в OneViewController и установка панели инструментов следующим образом:
[self setToolbarItems: [[NSArray alloc] initWithObjects: button1, button2, nil] animated: NO];
сделал трюк!