这是我在UINavigationController中创建和显示后退按钮的代码:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
backButton.title = @"Home";
self.navigationItem.backBarButtonItem = backButton;
这在iOS 5中完美运行,但自从升级到iOS 6后它无法正常工作。
为了确保我能够处理所有可能性,我已将此代码放在我的viewDidLoad
,viewDidAppear
和viewWillAppear
中 - 因此它采用了3种不同的方法 - 而且它仍然存在没有出现。它显然也在rootViewController的didSelectRowAtIndexPath
方法中 - 我们从中导航到其他viewControllers。
我在rootViewController的banner / header中也有一个自定义图形:
// Banner Code:
bannerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[bannerImageView setImage:[UIImage imageNamed:@"logo-banner@2x.png"]];
[self.navigationController.navigationBar addSubview:bannerImageView];
但同样,这在iOS 5中运行得非常好,并且与后退按钮没有冲突。但现在我只是在没有后退按钮的情况下获得横幅/标题图形。
最后一点说明:当我点击它应该在的EMPTY空间时,后退按钮显示为瞬间。所以它就在那里 - 但是在你点击应该存在的空白空间之前你看不到它。它然后显示一瞬间 - 然后应用程序导航回一个屏幕,使其立即消失。很奇怪。
有线索吗?
答案 0 :(得分:1)
您认为自定义标题图形与隐藏的后退按钮有关(如果删除标题图像,请注意后退按钮将再次显示),这是正确的。
如果您不支持早于iOS 5的固件,请使用setBackgroundImage:forBarMetrics:
自定义标题背景:
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"logo-banner.png"] forBarMetrics:UIBarMetricsDefault];
(请注意图片名称中没有@2x
- 您的应用会知道是否自动使用图片的标准版或视网膜版。)