0

tabBarベースのアプリで、UINavigationBarをサブクラス化しました。BlueNavBar、BlackNavBar、RedNavBarの3つがあるとしましょう。これは次のようになります。

        //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を使用して、タブごとにサブクラス化されたナビゲーションバーを割り当てました。それはうまく機能していて、問題はありません。

ただし、一部のviewControllerでは、「pushViewController」中にナビゲーションバーを変更したいと思います。現在のナビゲーションバー(BlueNavBarなど)をRedNavBarに変更したいとします。Interface Builderを使わずに、これをプログラムで行うにはどうすればよいですか?

4

1 に答える 1

0

それは、View Controller クラス自体をどのように設計したかによって異なります。必要なものを設計する 1 つの方法は、View Controller を作成するときに、スタックにプッシュする前に、ナビゲーション バーのタイプ (色など) を設定することです。何かのようなもの:

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、ビュー コントローラー用に適切な色のナビゲーション バーを (再) 作成します。

于 2010-09-04T01:41:13.537 に答える