在我的主视图中,它包含一个菜单,我在导航栏上有一个图像。当我选择其中一个菜单项时,我想删除背景图像并正常设置文本。
当第二个视图打开时,背景图像仍然存在。我尝试了一切,在StackOverflow上得到了一些答案,但仍然得到了同样的错误。
我试过了:
- (void)viewWillDisappear:(BOOL)animated
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(36, 36), NO, 0.0);
UIImage *blank = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[UINavigationBar appearance] setBackgroundImage:blank forBarMetrics:UIBarMetricsDefault];
[super viewWillDisappear:animated];
}
没用。试过这个:
@implementation ViewController{
UIImage *_bgNavigationBarImage;
}
- (void) viewWillAppear:(BOOL)animated {
_bgNavigationBarImage = [self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation-bar-home.png"] forBarMetrics:UIBarMetricsDefault];
}
- (void)viewWillDisappear:(BOOL)animated
{
[self.navigationController.navigationBar setBackgroundImage:_bgNavigationBarImage forBarMetrics:UIBarMetricsDefault];
[super viewWillDisappear:animated];
}
也没用。试图将nil设置为背景但仍然无效。
答案 0 :(得分:0)
完成!
使用第一种方法,但更改此内容:
[[UINavigationBar appearance] setBackgroundImage:blank forBarMetrics:UIBarMetricsDefault];
为此:
[self.navigationController.navigationBar setBackgroundImage:blank forBarMetrics:UIBarMetricsDefault];