简体   繁体   English

Swift 如何只保留带有大标题的第一页?

[英]Swift How can I keep only the first page with a large title?

The large title of navigation item comes out when the app just describes execution.当应用程序仅描述执行时,导航项的大标题就会出现。 However, when I move to another page and come back, that mode is turned off.但是,当我移至另一页并返回时,该模式已关闭。 Create a viewDidLoad for each page as follows: What's the problem?为每个页面创建一个viewDidLoad,如下:有什么问题?

class CollectionViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
    navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationItem.largeTitleDisplayMode = .always
}

next page下一页

class AssetCollectionViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()
    
    self.navigationItem.largeTitleDisplayMode = .never
}

Possibly adding code didn't work.可能添加代码不起作用。

    override func viewDidDisappear(_ animated: Bool) {
    
    self.navigationItem.largeTitleDisplayMode = .always
}

Change titleDisplay mode in viewWillppear function as it will always execute更改viewWill中的标题显示模式将显示 function,因为它将始终执行

class CollectionViewController: UIViewController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)    
        navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationItem.largeTitleDisplayMode = .always
    }

How about doing all the implementation in your CollectionViewController like so:在你的 CollectionViewController 中做所有的实现怎么样:

override func viewWillDisappear(_ animated: Bool) {
    navigationController?.navigationBar.prefersLargeTitles = false

}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationBar.prefersLargeTitles = true
}

When you're setting navigationItem.largeTitleDisplayMode in viewDidDisappear(_:) , you're doing it for the current controller's navigationItem .当您在viewDidDisappear(_:)中设置navigationItem.largeTitleDisplayMode时,您正在为当前控制器的navigationItem执行此操作。

I suggest you to create UINavigationController subclass with:我建议您使用以下命令创建UINavigationController子类:

override func viewDidLoad() {
    super.viewDidLoad()
    
    navigationBar.prefersLargeTitles = true
}

Then set navigationItem.largeTitleDisplayMode to .never in controllers, where you don't want large title.然后在不需要大标题的控制器中将navigationItem.largeTitleDisplayMode设置为.never

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM