弹出视图时不会恢复自定义导航栏背景

时间:2011-11-29 23:13:07

标签: objective-c ios cocoa-touch uiviewcontroller uinavigationbar

我的导航工具栏出现问题。我在我的应用程序委托中设置导航工具栏背景图像,然后有一个按钮,单击该按钮可更改导航工具栏背景图像并移动到另一个视图。

这样可以正常工作,但是,当我点击后退按钮并返回原始视图时,导航工具栏背景图像不会变回。

以下是相关代码:

在我的第一个视图控制器中:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //set to change the navigation toolbar to this background image (the first) when this view loads
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"QuickGrocery Logo Updated.jpg"] forBarMetrics:UIBarMetricsDefault];
}

按钮操作:

    - (IBAction)wellBalancedMealsClicked:(id)sender {

    QuickGroceryMasterViewController *masterViewController = [[QuickGroceryMasterViewController alloc] initWithNibName:@"QuickGroceryMasterViewController" bundle:nil];

    [masterViewController setRecipeChoice:1];

//changes the navigation toolbar background image
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Keep It Balanced.jpg"] forBarMetrics:UIBarMetricsDefault];
}

1 个答案:

答案 0 :(得分:2)

导航栏只有一个图像。如果你改变它,以后你想要它改回来,你必须自己改变它。

我建议你给每个视图控制器一个navigationBarImage属性。设置导航控制器的代理。在委托中,添加此方法:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    UIImage *image = [(id)viewController navigationBarImage];
    if (image)
        [navigationController.navigationBar setBackgroundImage:image forBarMetrics: UIBarMetricsDefault];
}