显然是Ach。我忘记了,对于新的iOS,我正在设置:
我在设置图像时遇到了一些困难。。奇怪的是,在不同的控制器中,它确实起作用。可能self.navigationItem
无效,但为什么我只是从不同的ViewController
推送ViewController
。。?
我试过:
// preview buttonImage shows that image is correct and exists
UIImage *buttonImage = [[UIImage imageNamed:@"back"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithTitle:@"TEST" style:UIBarButtonItemStylePlain target:nil action:NULL];
[buttonItem setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
self.navigationItem.backBarButtonItem = buttonItem;
不同的方法:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"TEST" forState:UIControlStateNormal];
[button setImage:buttonImage forState:UIControlStateNormal];
buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.backBarButtonItem = buttonItem;
我想也许self.navigationItem是错误的,但它似乎存在:
NSLog(@"%@, %@", self.navigationItem, self.navigationItem.backBarButtonItem);
--CONSOLE-- MyApp[56574:3827402] <UINavigationItem: 0x7b6ecd10>, <UIBarButtonItem: 0x7b6f01c0>
我甚至尝试过设置:
self.navigationItem.backBarButtonItem = nil;
似乎也不起作用。
--编辑--
但是以下代码确实有效:
[self.navigationItem setHidesBackButton:YES];
这表明self.navigationItem
是有效的。
UIImage *backImage = [UIImage imageNamed:@"back"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImage forState:UIControlStateNormal barMetrics:UIBarMetricsCompact];
所以我需要为这个控制器更改它,在那里我想使用不同的图像。