3

私のAppDelegateには、次のコードがあります。

UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UINavigationController *itemsNavigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];

UIVNagigationBarの背景色を緑に設定するにはどうすればよいですか?

私が行った場合:

[self.navigationController.navigationBar setTintColor:[UIColor greenColor]];

viewController1からは、これは効果がありません。

前もって感謝します!

アップデート:

- (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;
}

どちらも効果はありません

4

4 に答える 4

5

このinitWithNibName:bundle方法では、ViewControllerはまだNavigationControllerを持つことができません。

ナビゲーションコントローラーもnibファイルから作成されている場合awakeFromNibは、UIViewControllerのメソッドを実装して、そこに色を設定してみてください。awakeFromNibnibファイル上のすべてのオブジェクトがロードおよび初期化されると呼び出されます。

ナビゲーションコントローラーをプログラムで作成する場合は、ビューコントローラー(ペン先からロード)をナビゲーションコントローラーに追加した後でのみ、色を設定する必要があります。ビューコントローラを追加する場所でこれを行うことができます。viewDidLoadまたは、またはのviewWillAppearメソッドを実装しUIViewControllerて色を設定してみてください。

于 2012-09-19T18:11:25.477 に答える
3

あなたはそれをあまりにも早くやっています。(エラーは発生しませんが、NSLogを使用して簡単に検出できるため、メッセージはに送信される無駄なメッセージnilです。)FirstViewControllerのまで待ちviewDidLoadます。

または、すでに提案されているように外観プロキシを使用します。ここでの利点の一部は、タイミングが重要でなくなることです。ビューコントローラインスタンスが存在する前に、事前にそれを行うことができます。例:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/ch19p549navigationInterface/p471p482navigationInterface/AppDelegate.m

于 2012-09-19T18:31:07.970 に答える
2

appearanceiOS 5のメソッドを使用して、アプリ全体のナビゲーションバーの色合いを変更することもできます。たとえば、次のapplication:didFinishLaunchingWithOptionsことができます。

if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) 
{
    [[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
}
于 2012-09-19T18:23:49.387 に答える
0

[itemsNavigationController1.navigationBar setTintColor:[UIColorgreenColor]];を試してください。

于 2012-09-19T17:58:42.910 に答える