【问题标题】:why my iOS11 navigationController doesn't to work为什么我的 iOS11 导航控制器不起作用
【发布时间】:2018-05-12 19:35:10
【问题描述】:

我只想显示一个大标题
我的ViewController.swift 看起来像:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.white

        title = "Hello world"
        self.navigationController?.navigationBar.prefersLargeTitles = true
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

但它不起作用。

【问题讨论】:

  • 您的 ViewController 是否在导航控制器中?
  • 抱歉,如何在导航控制器中制作我的 ViewController?
  • 如果您不知道如何将视图控制器作为根控制器插入或简单地将视图控制器推送到导航控制器堆栈上。你应该回去做一些研究。听起来你甚至不知道 UINavigationControllers 的基础知识

标签: ios swift uinavigationcontroller ios11


【解决方案1】:
  let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 60))
        navigationBar.backgroundColor = UIColor(red: 46.0/255.0, green: 145.0/255.0, blue: 245.0/255.0, alpha: 1.0)
        
        self.navigationItem.title = "Add Title"
        self.view .addSubview(navigationBar)
    if #available(iOS 11.0, *) {
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationItem.largeTitleDisplayMode = .always
    } else {
        // Fallback on earlier versions
    }

【讨论】:

  • 谢谢!我尝试添加此代码。但它不起作用,只显示全白屏。
  • @sunny 立即查看
  • 它只显示一个非常狭窄的反应有一些蓝色没有任何文字。
【解决方案2】:

要在导航栏中显示大标题,您需要将largeTitleDisplayMode .always 添加以下代码行到您的viewDidLoad 中也不要忘记检查ios11 或不

   title = "Hello world"

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

你的UIViewController 应该有一个UINavigationController 如果您的 UIViewController 未嵌入 UINavigationController 中,请执行以下步骤

打开你的故事板 -> 选择你的视图控制器 -> 编辑器 -> 嵌入 -> NavigationController

【讨论】:

  • 它仍然没有显示任何内容。值得一提的是,我从其他人那里克隆了项目。有用。我对该项目有相同的代码,但仍然无法正常工作。太糟糕了。
  • 你有没有展示这个viewcontroller视图navigationController
  • 我很确定只是检查 iOS 11 是否还不够。您还应该检查系统是否也响应该方法
  • 是的!有用。非常感谢。 @Ganesh Manickam
【解决方案3】:

首先,确保您的ViewControllerUINavigationController 内。

继续检查 IOS 11

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

} else { ... }

【讨论】:

  • 对不起,我是初学者。如何让我的 ViewController 在 UINavigationController 中?
  • 您可以通过编程方式创建它:UINavigationController(rootViewController: ViewController())
【解决方案4】:

您的问题是,您需要将 viewcontroller 添加到 navigation controller

window = UIWindow(frame: UIScreen.main.bounds)
let mainController = ViewController()
let navigationController = UINavigationController(rootViewController: mainController)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多