0

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

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

4

1 回答 1

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];

然后,setter 方法navigationBarStyle将为视图控制器(重新)创建一个颜色适当的导航栏。

于 2010-09-04T01:41:13.537 回答