0

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

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

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

为了确保我处理所有可能性,我已将此代码放在我viewDidLoadviewDidAppear, 和viewWillAppear- 所以它在 3 种不同的方法中 - 它仍然没有出现。它也显然在 rootViewController 的didSelectRowAtIndexPath方法中——我们从中导航到其他 viewController 的方法。

我在 rootViewController 的横幅/标题中也有一个自定义图形:

// 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 空间时,后退按钮确实会显示一秒钟。所以它就在那里 - 但你不能看到它,直到你点击它应该在的空白空间。然后它会出现一瞬间 - 但随后应用程序会导航回一个屏幕,因此它会立即消失。很奇怪。

有什么线索吗?

4

1 回答 1

1

假设您的自定义标题图形与不可见的后退按钮有关(如果您删除标题图像,请注意后退按钮将再次可见),您是正确的。

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

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

(请注意@2x图像名称中没有 - 您的应用程序将自动知道是使用标准版本还是视网膜版本。)

于 2012-10-26T15:26:35.107 回答