Swift 如何在调用“viewDidLoad”之前加载self.navigationController

Swift 如何在调用“viewDidLoad”之前加载self.navigationController,swift,mvvm,uiviewcontroller,uinavigationcontroller,lifecycle,Swift,Mvvm,Uiviewcontroller,Uinavigationcontroller,Lifecycle,我想在视图控制器调用viewDidLoad之前做一些事情。我调用了loadViewIfNeeded()但self.navigationController仍然为零。我怎样才能加载它 AppDelegate.swift BindableType.swift 斯威夫特 我发现了问题。我必须在viewController.bind(到:viewModel) func someMethod() { var viewController = Storyboard.instantiate()

我想在视图控制器调用viewDidLoad之前做一些事情。我调用了loadViewIfNeeded()self.navigationController仍然为零。我怎样才能加载它

AppDelegate.swift BindableType.swift 斯威夫特
我发现了问题。我必须在viewController.bind(到:viewModel)

func someMethod() {
    var viewController = Storyboard.instantiate()
    let viewModel = SomeViewModel()
    vc.bind(to: viewModel)
}
protocol BindableType {
    associatedtype ViewModelType

    var viewModel: ViewModelType! { get set }

    func bindViewModel()
}

extension BindableType where Self: UIViewController {
    mutating func bind(to model: Self.ViewModelType) {
        viewModel = model
        loadViewIfNeeded()

        // PROBLEM HERE: navigationController is nil, but view have been loaded
        navigationController?.navigationBar.prefersLargeTitles = true
        navigationController?.navigationItem.largeTitleDisplayMode = .automatic

        bindViewModel()
    }
}
class SomeViewController: BindableType {

    override func viewDidLoad() {
        super.viewDidLoad()

        // navigationController?.navigationBar.prefersLargeTitles = true
        // navigationController?.navigationItem.largeTitleDisplayMode = .automatic
    }

    func bindViewModel() {
        ...
    }
}
self.navigationViewController.pushViewController(viewController, animated: true)
viewController.bind(to: viewModel)