如何解决视图控制器不尊重“largeTitleDisplayMode”
好像我不能设置navigationItem.largeTitledisplayMode = .always
,除非我也设置了navigationBar.prefersLargeTitles = true
?这是预期的行为吗?
我很难相信苹果会强迫我在导航控制器的每个屏幕上手动设置 largeTitledisplayMode = .never
,即使是我无法控制的屏幕,以便只显示一个屏幕标题很大。
解决方法
您可以尝试通过 UINavigationControllerDelegate.willShow 这样的调用来控制它。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.delegate = self
}
}
// Assumption: ViewController is rootViewController for the UINavigationController
extension ViewController: UINavigationControllerDelegate {
func navigationController(_ navigationController: UINavigationController,willShow viewController: UIViewController,animated: Bool) {
let isRootVC = (viewController === self)
viewController.navigationItem.largeTitleDisplayMode = isRootVC ? .always : .never
}
}
更新
另一种选择是对导航堆栈中的 rootViewController 实例的 viewWillAppear(_:)
和 viewWillDisappear(_:)
调用执行相同的管理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。