【问题标题】:prefersLargeTitles doesn't work with programmatic layoutprefersLargeTitles 不适用于程序化布局
【发布时间】:2018-01-19 20:14:38
【问题描述】:

我正在尝试以编程方式添加表格视图,但未显示大标题。

这是我的代码:

self.view.addSubview(module.tableView)

module.view.translatesAutoresizingMaskIntoConstraints = false

if #available(iOS 11.0, *) {
    NSLayoutConstraint.activate([
        module.view.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 0),
        module.view.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0),
        module.view.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 0),
        module.view.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: 0)
    ])
}

注意:视图控制器中启用了大标题

if #available(iOS 11.0, *) {
    navigationController?.navigationBar.prefersLargeTitles = true
    navigationItem.largeTitleDisplayMode = .always
}

也许这很重要:我正在尝试添加一个表格作为子视图控制器。我的子控制器是 UITableViewController。如果我在viewDidLoad() 中添加子视图,大标题显示但不滚动。

这是我添加子模块的link to file。您可以在addChild(module:)方法中看到有问题的详细代码或here

请告诉我如何修复此错误。

【问题讨论】:

    标签: ios swift xcode ios11 swift4


    【解决方案1】:

    我正在使用程序化布局并遇到了类似的问题。我在这里找到了解决方案:https://stackoverflow.com/a/46692583/131378。在viewDidLoad() 中,我不得不将largeTitleDisplayMode 关闭再打开。这是使大标题与滚动一起使用的正确组合:

    self.navigationItem.largeTitleDisplayMode = .never
    self.navigationItem.largeTitleDisplayMode = .always
    

    【讨论】:

      【解决方案2】:

      在您配置表格视图的视图控制器的viewDidLoad 方法中启用大标题。

      if #available(iOS 11, *) {
          self.navigationController?.navigationBar.prefersLargeTitles = true
      }
      

      【讨论】:

      • 我已启用此功能
      • 谢谢。如何添加与大标题相关的表格视图?没有表格相关代码,大标题是否有效?
      • 没有表格的大标题作品(仅显示大状态)。如果我在情节提要中添加表格视图,那么一切都很完美。也许这很重要:我正在尝试添加一个表作为子视图控制器
      • 你能把代码贴在你小时候添加的地方吗?
      • 当然。这是我添加子模块的link to file。您可以在 addChild(module:) 方法中看到有问题或 here 的详细代码。
      【解决方案3】:

      将您的 iOS Deployment Target 更新为 11.0 或更高版本。目前,它位于10.3。这就是为什么您看不到大标题的原因。

      【讨论】:

      • 我确实看到您在“Main.storyboard”中嵌入了一个导航控制器,但是在您的项目设置中,您需要在“CategoriesViewController.storyboard”中嵌入另一个。
      • CategoriesViewController 以编程方式嵌入 AppDelegate 并设置为根视图
      • 哎呀!我忽略了...我已经编辑了我的解决方案。让我知道它是否有效。
      • 新解决方案不起作用我看到小标题 :( 也许这很重要:如果我在 viewDidLoad() 中添加子视图,大标题显示但不滚动
      • 我检查了您的项目,我意识到当categoriesListModule 作为子级添加到CategoriesModuleConfigurator.swift 内部的CategoriesViewController 实例时,问题就出现了。
      【解决方案4】:

      您必须单击导航栏上的主导航控制器,然后在属性检查器中选择“首选大标题”。

      【讨论】:

      • 我正在以编程方式使用UINavigationController,并尝试从代码中设置prefersLargeTitles
      【解决方案5】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-19
        相关资源
        最近更新 更多