UINavigationController 后退按钮消失?
Posted
技术标签:
【中文标题】UINavigationController 后退按钮消失?【英文标题】:UINavigationController's back button disappears? 【发布时间】:2009-05-28 08:43:28 【问题描述】:我注意到我的一个视图控制器发生了一些奇怪的事情:后退按钮消失了,但可以通过点击左上角(即按钮所在的位置)返回到上一个视图控制器。
在我的整个文件中,没有将 self.navigationItem.hidesBackButton 设置为 YES 的行; NSLog 也会在 viewDidLoad 中打印 0 作为 self.navigationItem.hidesBackButton 的值。
这在模拟器和真实设备中都会发生。有什么想法吗?
【问题讨论】:
我也遇到了同样的问题,但是点击左上角没有任何效果,但原因是一样的。 一旦我的哦,亲爱的。在之前的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 上设置后退按钮