首页 文章

UINavigation控制器后退按钮 Headers 显示上一个 Headers

提问于
浏览
1

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

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

如果iPhone X像上面那样显示它是有意义的,因为屏幕宽度更长,因此它有更多空间可以用于更长的 Headers .

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

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

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

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

任何帮助,将不胜感激 .

2 回答

  • 2

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

    如果您有2个视图控制器VCA和VCB,并且VCA将VCB推送到它's navigation controller' s导航堆栈,则需要在按下VCB之前在VCA中设置 backBarButtonItem . 您可以在 viewDidLoad 方法中执行此操作

    class VCA: UIViewController {
        func viewDidLoad() {
            super.viewDidLoad()
    
            navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)
        }
    }
    
  • 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
    }
    

相关问题