在我的AppDelegate中,我有以下代码:
UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UINavigationController *itemsNavigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
如何将UIVNagigationBar的背景颜色设置为绿色?
如果我这样做:
[self.navigationController.navigationBar setTintColor:[UIColor greenColor]];
提前致谢!
更新:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"MyTitle", @"");
[self.navigationController.navigationBar setTintColor:[UIColor greenColor]];
[self.parentViewController.navigationController.navigationBar setTintColor:[UIColor greenColor]];
}
return self;
}
两者都没有效果
答案 0 :(得分:5)
在initWithNibName:bundle
方法中,您的视图控制器还没有导航控制器。
如果您的导航控制器也是从nib文件创建的,请尝试实现UIViewController的awakeFromNib
方法并在那里设置颜色。一旦加载并初始化了nib文件上的每个对象,就会调用awakeFromNib
。
如果以编程方式创建导航控制器,则只有在将视图控制器(从笔尖加载)添加到导航控制器后才应设置颜色。您可以在添加视图控制器的位置执行此操作。或者尝试实施viewDidLoad
的{{1}}或viewWillAppear
方法来设置颜色。
答案 1 :(得分:3)
你做得太快了。 (您没有收到错误,但您的消息是发送到nil
的无效消息,因为您可以使用NSLog轻松发现。)等到FirstViewController的viewDidLoad
。
或者使用已建议的外观代理。这里的优点部分是时间变得不重要;您可以在任何视图控制器实例存在之前提前完成。例如:
答案 2 :(得分:2)
您还可以使用iOS 5中的appearance
方法更改应用中导航栏的色调。例如,在您的application:didFinishLaunchingWithOptions
中,您可以:
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
{
[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
}
答案 3 :(得分:0)
试 [itemsNavigationController1.navigationBar setTintColor:[UIColor greenColor]];