在pushViewController上更改navigationBar:

时间:2010-09-04 01:22:57

标签: iphone uinavigationbar pushviewcontroller

在我的基于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为每个选项卡分配了子类导航栏。这很有效,没有问题。

在某些viewControllers中,我想在“pushViewController”期间更改navigationBar。假设我想将当前导航栏(例如BlueNavBar)更改为RedNavBar。如果没有Interface Builder,我该如何以编程方式执行此操作?

1 个答案:

答案 0 :(得分:0)

这取决于您自己如何设计视图控制器类。设计所需内容的一种方法是在创建视图控制器之前设置导航栏类型(即颜色),然后再将其推入堆栈。类似的东西:

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的setter方法然后(重新)为视图控制器创建一个适当颜色的导航栏。

相关问题