在我的基于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,我该如何以编程方式执行此操作?
答案 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方法然后(重新)为视图控制器创建一个适当颜色的导航栏。