每个视图的单独UINavigationBars

时间:2013-01-16 11:46:41

标签: iphone ios objective-c uinavigationcontroller uinavigationbar

我有navigation view controller root view controller,其中我设置了导航栏的外观。它看起来像这样:

UIImage *navBarImage = [UIImage imageNamed:@"GreyUp.png"];
[[UINavigationBar appearance] setBackgroundImage:navBarImage
                                       forBarMetrics:UIBarMetricsDefault];

但是,这会改变所有以下视图控制器的navBar外观,我不喜欢这样。我希望一个navBar用于根视图,另一个用于另一个视图。如何实现这一目标?

5 个答案:

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

导航栏上的按钮,您可以按照我的回答

How to set a picture programmatically in a NavBar?

答案 3 :(得分:1)

在rootViewController的viewWillAppear中,自定义您的navigationBar。

在rootViewController的viewWillDisAppear中,执行要为其余导航层次结构显示的更改。

答案 4 :(得分:0)

为导航栏设置背景颜色或使用“外观”方法。您想在viewWillAppear

中更改导航栏图像的位置