【问题标题】:UINavigation Controller Back Button not showing since upgrading to iOS 6UINavigationController 后退按钮自升级到 iOS 6 后未显示
【发布时间】:2012-10-16 20:33:49
【问题描述】:

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

有什么线索吗?

【问题讨论】:

    标签: iphone uinavigationcontroller uibarbuttonitem back-button


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好吧,我希望该应用程序可以与运行 both iOS 5 AND iOS 6 的设备一起使用 - 我还能使用 setBackgroundImage:forBarMetrics 方法吗?如果没有,如果setBackgroundImage:forBarMetrics 仅适用于 iOS 6,我该怎么办?
    • iOS 5 及以上版本支持。
    • 嗯 - 它不工作。我完全按照你说的做了。取出我的横幅代码并输入您建议的 setBackgroundImage:forBarMetrics: 代码 - 所以我得到了横幅,但后向箭头仍然没有出现......还有其他想法吗?
    • 实际上,它正在工作 :-) 有一些冲突的代码,但是一旦我将所有内容统一起来,它就可以工作了 - 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多