我有navigation view controller
root view controller
,其中我设置了导航栏的外观。它看起来像这样:
UIImage *navBarImage = [UIImage imageNamed:@"GreyUp.png"];
[[UINavigationBar appearance] setBackgroundImage:navBarImage
forBarMetrics:UIBarMetricsDefault];
但是,这会改变所有以下视图控制器的navBar
外观,我不喜欢这样。我希望一个navBar
用于根视图,另一个用于另一个视图。如何实现这一目标?
答案 0 :(得分:2)
外观表示它正在应用到您的所有应用程序navBar中,因此您可以将其添加到您的所有视图控制器
self.navigationController.navigationBar.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"GreyUp.png"]];
答案 1 :(得分:1)
是的,可以实现使用此视图会出现
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar.png"] forBarMetrics:UIBarMetricsDefault];
//用于自定义后退按钮
UIButton* btnBack= [Utils createButtonWithTarget:self selector:@selector(btnBackClicked) frame:CGRectMake(0,5, 100, 40) bgimageName:@"tab_back.png" tag:0];//My method use yours
self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithCustomView:btnBack];
//use btnBack ref to change font title title color etc
My Utils类代码创建按钮
+ (UIButton *)createButtonWithTarget:(id)target
selector:(SEL)selector
frame:(CGRect)frame
bgimageName:(NSString *)imageName
tag:(NSInteger)aTag{
UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
button.frame = frame;
[button setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
[button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
// in case the parent view draws with a custom color or gradient, use a transparent color
button.backgroundColor = [UIColor clearColor];
button.showsTouchWhenHighlighted = YES;
button.tag = aTag;
return [button autorelease];
}
答案 2 :(得分:1)
您可以为不同的视图设置导航栏
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"login.png"] forBarMetrics:UIBarMetricsDefault];
导航栏上的按钮,您可以按照我的回答
答案 3 :(得分:1)
在rootViewController的viewWillAppear
中,自定义您的navigationBar。
在rootViewController的viewWillDisAppear
中,执行要为其余导航层次结构显示的更改。
答案 4 :(得分:0)
为导航栏设置背景颜色或使用“外观”方法。您想在viewWillAppear
中更改导航栏图像的位置