【问题标题】:Changing the navigationBar on pushViewController:更改 pushViewController 上的导航栏:
【发布时间】:2010-09-04 01:22:56
【问题描述】:

在我的基于 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,我如何以编程方式执行此操作?

【问题讨论】:

  • 你不需要retain image 变量,这意味着你也可以摆脱它的release

标签: iphone uinavigationbar pushviewcontroller


【解决方案1】:

这取决于您如何设计视图控制器类本身。设计所需内容的一种方法是在创建视图控制器时设置导航栏类型(即颜色),然后再将其推送到堆栈上。比如:

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 方法随后会(重新)为视图控制器创建一个颜色适当的导航栏。

【讨论】:

    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多