Ios 还原导航栏';将背景图像设置为默认值

Ios 还原导航栏';将背景图像设置为默认值,ios,cocoa-touch,Ios,Cocoa Touch,首先,我将导航栏的背景设置为半透明 barImage=[[self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault] copy];//barImage is a UIImage point [self.navigationController.navigationBar setBackgroundImage:[UIImage new]

首先,我将导航栏的背景设置为半透明

    barImage=[[self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault] copy];//barImage is a UIImage point     
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                             forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
它工作得很好。 现在我需要将导航栏的背景图像恢复为默认值

- (void)dealloc
{

    [self.navigationController.navigationBar setBackgroundImage:barImage
                                                  forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = nil;

}

这不管用。我该怎么办呢?

不确定您是否仍然被困在这个问题上,但下面是扭转这种效果的代码。我借了一个导航控制器,把所有东西都复制到原来的导航控制器上

    UINavigationController *tempNavigationController = [[UINavigationController alloc]initWithRootViewController:[[UIViewController alloc]init]];
    [self.navigationController.navigationBar setBackgroundImage:[tempNavigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault]
                                                  forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [tempNavigationController.navigationBar shadowImage];
    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.view.backgroundColor = tempNavigationController.view.backgroundColor;

    tempNavigationController = nil;