【发布时间】:2017-10-25 05:10:16
【问题描述】:
self.navigationItem.backBarButtonItem!.title 导致 致命错误:在展开可选值时意外发现 nil,而我的视图控制器中显然有一个带有标题字符串的后退按钮
如何获取返回按钮的标题字符串?
【问题讨论】:
标签: ios swift uinavigationcontroller
self.navigationItem.backBarButtonItem!.title 导致 致命错误:在展开可选值时意外发现 nil,而我的视图控制器中显然有一个带有标题字符串的后退按钮
如何获取返回按钮的标题字符串?
【问题讨论】:
标签: ios swift uinavigationcontroller
当您引用self.navigationItem.backBarButtonItem 时,您应该知道,当self 不是topViewController 而是紧接在topViewController 下方时,该栏按钮项将在导航栏中使用。也就是说,当self 是topViewController 时,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")
【讨论】: