UINavigationController 后退按钮消失?

Posted

技术标签:

【中文标题】UINavigationController 后退按钮消失?【英文标题】:UINavigationController's back button disappears? 【发布时间】:2009-05-28 08:43:28 【问题描述】:

我注意到我的一个视图控制器发生了一些奇怪的事情:后退按钮消失了,但可以通过点击左上角(即按钮所在的位置)返回到上一个视图控制器。

在我的整个文件中,没有将 self.navigationItem.hidesBackButton 设置为 YES 的行; NSLog 也会在 viewDidLoad 中打印 0 作为 self.navigationItem.hidesBackButton 的值。

这在模拟器和真实设备中都会发生。有什么想法吗?

【问题讨论】:

我也遇到了同样的问题,但是点击左上角没有任何效果,但原因是一样的。 一旦我的 【参考方案1】:

哦,亲爱的。在之前的view controller的实现中,不小心把self.title设置成了@"",导致了这个烦人的bug。

删除此行即可解决问题。

【讨论】:

【参考方案2】:

我有一个递归导航控制器,这也发生在我身上,我用这个代码来修复它:

self.navigationItem.leftItemsSupplementBackButton = true

【讨论】:

【参考方案3】:

以防万一有人在使用自定义后退按钮时遇到此问题,并且上述修复不起作用,这里有一个类似的问题,我遇到了不同的解决方案。

我有一个自定义的后退按钮,其中的文字正在消失,而箭头却可以看到 UINavigationController custom back button disappears from NavigationBar

因此,如果有人遇到类似的情况,自定义后退按钮上的后退按钮文本消失,这是我的方案并修复。

我在自定义 NavigationController 类中自定义了后退按钮,如下所示:

private func customizeBackButton() 
    let backImage = UIImage(named: "BackButton")?.withRenderingMode(.alwaysOriginal)
    navigationBar.backIndicatorImage = backImage
    navigationBar.backIndicatorTransitionMaskImage = backImage
    
    UIBarButtonItem.appearance().setTitleTextAttributes([
      NSAttributedString.Key.foregroundColor: UIColor.panoStoryYellow,
      NSAttributedString.Key.font: UIFont(name: "Montserrat-SemiBold", size: 15)!
    ], for: .normal)

这给了我:

现在,当我点击后退按钮文本时,文本消失了:

我确保我遵循了上述所有答案,例如设置标题以确保色调颜色有效等。但这不起作用。

在我的例子中,我需要为返回按钮的highlighted 状态设置属性,如下所示:

UIBarButtonItem.appearance().setTitleTextAttributes([
      NSAttributedString.Key.foregroundColor: UIColor.panoStoryYellow,
      NSAttributedString.Key.font: UIFont(name: "Montserrat-SemiBold", size: 15)!
], for: .highlighted)

在这之后,后退按钮的文字就再也没有消失过

【讨论】:

以上是关于UINavigationController 后退按钮消失?的主要内容,如果未能解决你的问题,请参考以下文章

捕捉 UINavigationController 本机后退按钮操作

如何在 uinavigationcontroller 中隐藏后退按钮

UINavigationController后退按钮动作问题

无法在 UINavigationController 上设置后退按钮

UINavigationController 不显示后退按钮

UINavigationController 上的后退按钮