自升级到iOS 6后UINavigationController后退按钮未显示

时间:2012-10-26 14:52:08

标签: iphone uinavigationcontroller uibarbuttonitem back-button

这是我在UINavigationController中创建和显示后退按钮的代码:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
backButton.title = @"Home";
self.navigationItem.backBarButtonItem = backButton;

这在iOS 5中完美运行,但自从升级到iOS 6后它无法正常工作。

为了确保我能够处理所有可能性,我已将此代码放在我的viewDidLoadviewDidAppearviewWillAppear中 - 因此它采用了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空间时,后退按钮显示为瞬间。所以它就在那里 - 但是在你点击应该存在的空白空间之前你看不到它。它然后显示一瞬间 - 然后应用程序导航回一个屏幕,使其立即消失。很奇怪。

有线索吗?

1 个答案:

答案 0 :(得分:1)

您认为自定义标题图形与隐藏的后退按钮有关(如果删除标题图像,请注意后退按钮将再次显示),这是正确的。

如果您不支持早于iOS 5的固件,请使用setBackgroundImage:forBarMetrics:自定义标题背景:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"logo-banner.png"] forBarMetrics:UIBarMetricsDefault];

(请注意图片名称中没有@2x - 您的应用会知道是否自动使用图片的标准版或视网膜版。)