UINavigation控制器的后退按钮标题显示先前的标题

时间:2018-08-30 09:44:20

标签: ios swift uinavigationcontroller

我想将后退按钮标题设置为“后退”。我已经在情节提要中设置了标题“后退”(导航项->后退按钮),它似乎可以在iPhone X上使用。

在iPhone SE上进行测试时,我将前一个VC标题视为后退按钮标题。因此,现在它显示为“

如果iPhone X像上面那样显示它,这是有道理的,因为屏幕宽度更长,因此它具有更大的空间来容纳更长的标题。

我该怎么做才能使这项工作成功?我已经尝试过一些方法,例如: 子类化UINavigation控制器并添加:

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

执行上述操作,但直接在视图控制器中。

在View Controller标题周围添加空格以使其更长(不起作用,如果可以,则有点黑)。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

要修改后退按钮,您应该在启动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
}

答案 1 :(得分:2)

您用于设置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)
    }
}