【问题标题】:How to get navigation back button title?如何获取导航返回按钮标题?
【发布时间】:2017-10-25 05:10:16
【问题描述】:

self.navigationItem.backBarButtonItem!.title 导致 致命错误:在展开可选值时意外发现 nil,而我的视图控制器中显然有一个带有标题字符串的后退按钮

如何获取返回按钮的标题字符串?

【问题讨论】:

    标签: ios swift uinavigationcontroller


    【解决方案1】:

    当您引用self.navigationItem.backBarButtonItem 时,您应该知道,当self 不是topViewController 而是紧接在topViewController 下方时,该栏按钮项将在导航栏中使用。也就是说,当selftopViewController 时,self.navigationItem.backBarButtonItem 不是当前可见的按钮,但是当另一个视图控制器被推到它上面时。

    您还应该注意:

    当此属性为 nil 时,导航项使用其 title 属性中的值来创建适当的后退按钮。

    这意味着self.navigationItem.backBarButtonItem 可以是nil 并且仍然有一个标题。见here

    如果您想知道后退按钮使用了什么文本,您可以这样说:

    extension UINavigationController {
        var backButtonText: String? {
            guard let self.viewControllers.count > 1 else { return nil }
            let viewController = self.viewControllers[self.viewControllers.count - 2]
            return viewController.navigationItem.backBarButtonItem?.title ?? viewController.title
        }
    }
    

    可以这样称呼:

    print(self.navigationController?.backButtonText ?? "No back button title")
    

    【讨论】:

    • 现在还可以访问顶部控制器的后退按钮自定义视图吗?
    • 如果我只想在一个视图控制器中更改返回按钮文本怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多