UINavigation контроллер с нижней панелью инструментов теряет UIBarButtonItems при переключении вида - PullRequest
0 голосов
/ 07 марта 2011

У меня есть контроллер навигации, созданный программно для обработки переключения между представлениями 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 Ответ

1 голос
/ 13 марта 2011

Ну, после некоторого поиска, я понял, что неправильно использую UINavigationController.

Панель инструментов контроллера навигации является частью навигационного представления, отображаемого внутри, а не родительского элемента. (Мне потребовалось некоторое время, чтобы понять это!) Я создавал кнопки в том же контроллере, который создавал сегменты NavigationController, а не внутри oneViewController, где я должен был иметь.

Перемещение кода в OneViewController и установка панели инструментов как:

    [self setToolbarItems: [[NSArray alloc] initWithObjects: button1, button2, nil] animated: NO];

сделал свое дело!

...