UINavigationcontroller后退按钮标题显示上一个标题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UINavigationcontroller后退按钮标题显示上一个标题相关的知识,希望对你有一定的参考价值。

我想将后退按钮标题设置为“后退”。我在故事板(导航项目 - >后退按钮)中设置了标题“后退”,它似乎正在iPhone X上运行。

在iPhone SE上进行测试时,我将之前的VC标题视为后退按钮标题。所以现在它显示为“<APP NAME ....... APP NAME .......”这有点奇怪。

如果iPhone X像上面那样显示它是有道理的,因为屏幕宽度更长,因此它有更多的空间可以用于更长的标题。

我能做些什么来完成这项工作?我已经尝试过一些类似的东西:Subclass UINavigation controller并添加:

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)

执行上述操作,但直接在View Controllers中执行。

在View Controller标题周围添加空格以使其更长(不起作用,如果它确实比它有点hacky)。

任何帮助,将不胜感激。

答案

您设置backBarButtonItem的代码很好,但是您在错误的视图控制器上设置它。

如果您有2个视图控制器VCA和VCB,并且VCA将VCB推送到其导航控制器的导航堆栈,则需要在推送VCB之前在VCA中设置backBarButtonItem。你可以用你的viewDidLoad方法做到这一点

class VCA: UIViewController {
    func viewDidLoad() {
        super.viewDidLoad()

        navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)
    }
}
另一答案

要修改后退按钮,您应该在推送之前更新它,在启动segue的视图控制器上:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let backItem = UIBarButtonItem()
    backItem.title = "Back"
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

以上是关于UINavigationcontroller后退按钮标题显示上一个标题的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 后退按钮一半适用于 iPad 横向

如果用户按下后退按钮,如何调用一些代码

UINavigationController“后退按钮”自定义文本?

UINavigationController 后退按钮消失?

捕捉 UINavigationController 本机后退按钮操作

如何在 uinavigationcontroller 中隐藏后退按钮