Ios 在viewDidLoad中创建导航栏

Ios 在viewDidLoad中创建导航栏,ios,uiviewcontroller,navigationbar,viewdidload,viewwillappear,Ios,Uiviewcontroller,Navigationbar,Viewdidload,Viewwillappear,我正在viewDidLoad中创建我的导航栏。我在许多示例代码中看到,应该在视图中创建导航栏。如果我的视图控制器是根视图控制器,则不会设置导航栏背景图像。除此之外,它似乎工作正常。是否有任何方法可以完全且仅在视图控制器的整个生命周期中创建一次导航栏,而不在视图中显示 当前代码: - (void)viewDidLoad { [self initializeNavigationBar]; } - (void)viewWillAppear { [self initializeNavi

我正在
viewDidLoad
中创建我的导航栏。我在许多示例代码中看到,应该在
视图中创建导航栏。如果我的视图控制器是根视图控制器,则不会设置导航栏背景图像。除此之外,它似乎工作正常。是否有任何方法可以完全且仅在视图控制器的整个生命周期中创建一次导航栏,而不在
视图中显示

当前代码:

- (void)viewDidLoad
{
    [self initializeNavigationBar];
}
- (void)viewWillAppear
{
    [self initializeNavigationBar];
}
- (void)initializeNavigationBar
{
    navBar = [[ICANavBarView alloc] initWithFrame:CGRectMake(0, 0, 768, 44)];
    navBar.delegate = self;
    [navBar createViewWithTitle:StringForKey(@"company_short_title")];

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bar_bg"] forBarMetrics:UIBarMetricsDefault];
    [self.navigationItem setTitleView:navBar];

    [self.navigationItem setHidesBackButton:YES];

    //iOS7 Bug fixation of Navigation Bar
    [navBar hideStatusBarOnViewController:self];

    [self.navBar enableEditButton:(imageView.layer.sublayers.count > 0)];
}
当我显示视图时,我不想在
视图中执行此操作。关闭这些显示的视图时,将显示调用
view
。因此,导航栏被重新初始化

以下代码是我要避免的:

- (void)viewDidLoad
{
    [self initializeNavigationBar];
}
- (void)viewWillAppear
{
    [self initializeNavigationBar];
}
- (void)initializeNavigationBar
{
    navBar = [[ICANavBarView alloc] initWithFrame:CGRectMake(0, 0, 768, 44)];
    navBar.delegate = self;
    [navBar createViewWithTitle:StringForKey(@"company_short_title")];

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bar_bg"] forBarMetrics:UIBarMetricsDefault];
    [self.navigationItem setTitleView:navBar];

    [self.navigationItem setHidesBackButton:YES];

    //iOS7 Bug fixation of Navigation Bar
    [navBar hideStatusBarOnViewController:self];

    [self.navBar enableEditButton:(imageView.layer.sublayers.count > 0)];
}
导航栏创建方法:

- (void)viewDidLoad
{
    [self initializeNavigationBar];
}
- (void)viewWillAppear
{
    [self initializeNavigationBar];
}
- (void)initializeNavigationBar
{
    navBar = [[ICANavBarView alloc] initWithFrame:CGRectMake(0, 0, 768, 44)];
    navBar.delegate = self;
    [navBar createViewWithTitle:StringForKey(@"company_short_title")];

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bar_bg"] forBarMetrics:UIBarMetricsDefault];
    [self.navigationItem setTitleView:navBar];

    [self.navigationItem setHidesBackButton:YES];

    //iOS7 Bug fixation of Navigation Bar
    [navBar hideStatusBarOnViewController:self];

    [self.navBar enableEditButton:(imageView.layer.sublayers.count > 0)];
}

您是否将
appDelegate
中的
rootViewController
设置为
UINavigationController
?是。我正在这么做。你的一些代码会有帮助的。“创建我的导航栏”是什么意思?您正在调用
setNavigationBarHidden:animated:
?您显然已经有了代码,因此请分享您已经有的代码,这样我们就不会猜测了。该代码没有告诉我们任何信息。
initializeNavigationBar