Изменение панели навигации на pushViewController: - PullRequest
0 голосов
/ 04 сентября 2010

В моем приложении на основе tabBar я подклассифицировал UINavigationBar. Допустим, у меня их три: BlueNavBar, BlackNavBar и RedNavBar. Это выглядит примерно так:

        //BlueNavBar.m
        - (void)drawRect:(CGRect)rect {
            self.tintColor = [UIColor colorWithRed:65.0f/255.0f green:(156.0f/255.0f) blue:(215.0f/255.0f) alpha:1.0];
            UIImage *image = [[UIImage imageNamed:@"blueNavBar.png"]retain];    
            [image drawInRect:rect];
            [image release];    
        }

Я назначил подклассную панель навигации для каждой вкладки с помощью Interface Builder. Это отлично работает, никаких проблем нет.

В некоторых viewController, однако, я хочу изменить панель навигации во время «pushViewController». Допустим, я хочу изменить текущую панель навигации (например, BlueNavBar) на RedNavBar. Как я могу сделать это программно, без Interface Builder?

1 Ответ

0 голосов
/ 04 сентября 2010

Это зависит от того, как вы спроектировали сами классы контроллера представления.Один из способов создать то, что вам нужно, это установить тип панели навигации (т.е. цвет) при создании контроллера представления, прежде чем помещать его в стек.Что-то вроде:

SomeViewController* someViewController = [[SomeViewController alloc] initWithNibName:@"SomeView" bundle:nil];
someViewController.navigationBarStyle = NBStyleRed; // NBStyleRed defined as an enum somewhere
[self.navigationController pushViewController:someViewController animated:YES];
[someViewController release];

Метод установки для navigationBarStyle затем (заново) создаст панель навигации соответствующего цвета для контроллера представления.

...