问题描述
我有一个扩展程序,可以用我在控制器的UINavigationController
中调用的大标题来配置ViewDidLoad
;
extension UINavigationController {
func configure(with title: String) {
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = title
navigationItem.largeTitledisplayMode = .automatic
}
}
但是,当我放置该扩展名时,它似乎没有被调用
navigationController?.navigationBar.prefersLargeTitles = true
进入我的ViewDidLoad
,它可以正常工作。为什么会有这样的想法?
解决方法
呼叫navigationController?.navigationBar.prefersLargeTitles = true
时指的是ViewController.navigationController
。
但是您的扩展名是针对UINavigationController
的,因此它引用了ViewController.navigationController.navigationController
只需替换一下:
navigationController?.navigationBar.prefersLargeTitles = true
与此:
navigationBar.prefersLargeTitles = true
并在viewDidLoad
中调用它:
navigationController?.configure(with: "")