首页 > 解决方案 > 未通过扩展设置大标题 [Swift 5]

问题描述

我有一个扩展来配置我的控制器UINavigationController调用的大标题;ViewDidLoad

extension UINavigationController {
    
    func configure(with title: String) {
        navigationController?.navigationBar.prefersLargeTitles = true
        navigationItem.title = title
        navigationItem.largeTitleDisplayMode = .automatic
    }
}

但是,当我放置以下内容时,似乎没有调用此扩展:

navigationController?.navigationBar.prefersLargeTitles = true

进入我的ViewDidLoad,它按预期工作。关于为什么会这样的任何想法?

标签: iosswiftuinavigationcontrollerpreferslargetitles

解决方案


当您调用navigationController?.navigationBar.prefersLargeTitles = true它时,它指的是ViewController.navigationController.

但是你的扩展是为了UINavigationController所以它指的是ViewController.navigationController.navigationController

只需替换这个:

navigationController?.navigationBar.prefersLargeTitles = true

有了这个:

navigationBar.prefersLargeTitles = true

并将其称为viewDidLoad

navigationController?.configure(with: "")

推荐阅读