【问题标题】:UINavigationBar large title not resizing when performing seguesUINavigationBar 大标题在执行 segues 时不调整大小
【发布时间】:2018-10-10 22:29:50
【问题描述】:

我在我的主要UIViewController 中使用了这个代码来获得一个大标题:

navigationController?.navigationBar.prefersLargeTitles = true

但我不希望在每个视图中都发生这种情况,实际上我只希望在我的主视图中出现那个大标题。

所以,在网上阅读时,我发现要实现这一点,我需要在我不想要那个大标题的视图中添加这个:

navigationController?.navigationItem.largeTitleDisplayMode = .never

但这并没有真正按预期工作。

我得到的结果是,当我执行 segue 时,标题消失了,但导航控制器保持相同的大小,就好像它里面有一个大标题一样。

我的实现可能有什么问题?

iOS 12.1 Beta 3
Xcode 10.1 Beta 2

【问题讨论】:

    标签: ios swift uinavigationcontroller preferslargetitles


    【解决方案1】:

    您应该将 视图控制器navigationItem 改为 largeTitleDisplayMode.never

    navigationItem.largeTitleDisplayMode = .never
    

    或者,如果您正在使用情节提要,您可以在导航项的属性检查器中将 大标题 选项设置为 从不

    【讨论】:

    • 也试过了,没有成功。 func setupNavigationTitle() { navigationItem.title = "Counters"; navigationController?.navigationBar.prefersLargeTitles = true; navigationController?.navigationItem.largeTitleDisplayMode = .never; }
    • @matt.logic 请在问题中显示您的确切设置。另外,尝试使用上面提到的代码创建一个视图控制器设置,看看问题是否仍然存在。
    • 好吧,我看错了,这解决了问题!非常感谢!如果我可以问,navigationController.navigationItem 和简单的navigationItem 有什么区别?
    • @matt.logic 将navigationController?.navigationItem.largeTitleDisplayMode = .never 替换为navigationItem.largeTitleDisplayMode = .never,如答案中所述。
    • @matt.logic 欢迎您!每个UIViewController 实例都有一个navigationItem 属性。因为UINavigationControllerUIViewController 的子类,所以它也有一个。但是,导航堆栈中视图控制器的导航项会覆盖 UINavigationController 本身的导航项(此行为允许您为堆栈中的每个 VC 分配不同的导航项标题)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多