0

我刚刚在我的应用程序中注意到了这个问题。我根本不想拥有大标题,所以这是我在我的viewDidLoad()...中调用的代码

//MARK: - Navigation Bar Setup
    func navConAcc() {
        let addBarButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addWorkout))
        navigationItem.rightBarButtonItem = addBarButton
        navigationController!.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor(red: 0.4784, green: 0.0863, blue: 0, alpha: 1.0)]
        navigationController?.navigationBar.prefersLargeTitles = false
        navigationController?.navigationItem.largeTitleDisplayMode = .never
        navigationItem.title = "My workouts"
    }

如您所见,我将大标题设置为 false 并将显示模式设置为,因此当第一次加载此 viewController 时,标题大小没有问题,但如果我转到我设置.never的下一个 viewControllerprefersLargeTitles为真,然后我随后返回第一个 viewController 并向下滚动,我的第一个 viewController 中的标题出于某种原因切换为大。有人可以向我解释为什么会这样吗?

4

1 回答 1

1

这是因为您将第二个控制器上的 nav-bar 的首选行为设置为很大,并且因为它在同一个导航堆栈中而得以维护。将此代码添加到您的第一个视图控制器以解决此问题:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationBar.prefersLargeTitles = false
}
于 2020-05-24T19:06:48.257 回答