如何从UIViewController访问UINavigationController

Cyb*_*erK 3 iphone ios

在我的AppDelegate中,我有以下代码:

UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UINavigationController *itemsNavigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
Run Code Online (Sandbox Code Playgroud)

如何将UIVNagigationBar的背景颜色设置为绿色?

如果我做:

[self.navigationController.navigationBar setTintColor:[UIColor greenColor]];
Run Code Online (Sandbox Code Playgroud)

从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;
}
Run Code Online (Sandbox Code Playgroud)

两者都没有效果

Dru*_*erB 5

在该initWithNibName:bundle方法中,您的视图控制器还不能具有导航控制器.

如果您的导航控制器也是从nib文件创建的,请尝试实现awakeFromNibUIViewController 的方法并在那里设置颜色.awakeFromNib在加载并初始化nib文件上的每个对象后调用.

如果以编程方式创建导航控制器,则只应在将视图控制器(从笔尖加载)添加到导航控制器后设置颜色.您可以在添加视图控制器的位置执行此操作.或尝试实施viewDidLoadviewWillAppear方法UIViewController来设置颜色.