导航栏不显示在Swift 5

Navigation bar is not displayed in Swift 5

我一直在开发 iOS 应用程序,我正在尝试向我的应用程序显示导航栏。我使用故事板来处理一些基本的 UI,但对于导航栏等其他部分,我正在尝试通过代码来实现它。

在 AppDelegate.swift 文件中,我放入了以下代码。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
    window = UIWindow(frame: UIScreen.main.bounds)
    UINavigationBar.appearance().tintColor = .black
    window?.rootViewController = FirstViewController()
    window?.rootViewController?.view.backgroundColor = UIColor.white
    window?.makeKeyAndVisible()
    return true
}

但是,导航栏没有出现在 FistViewController 上。

在FirstViewController中,我还把下面的代码放到viewwillappear函数中,用来显示导航栏。

self.navigationController?.isNavigationBarHidden = false
self.navigationController?.navigationBar.barStyle = .black

正如我所说,我有一个故事板,但我只用它来将 FirstViewController 设置为 isInitialView 控制器。我在 FirstViewController 上也有一个 table 视图,我可以看到它,但我没有看到导航栏。

所以我在想是不是我写的显示导航栏的代码有误...

有人知道我在这里遗漏了什么吗?

let viewController = FirstViewController()
let navVc = UINavigationController(rootViewController: viewController)
window?.rootViewController = navVc

您看不到导航栏,因为您没有将当前 viewcontroller 嵌入到导航控制器中。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

let viewController = FirstViewController()
let navigationController = UINavigationController(rootViewController: viewController)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()
return true

}

由于您使用的是故事板,因此您应该将 ViewController 嵌入到导航控制器中。你可以这样做,

  1. 首先打开您的 Main.storyboard 文件
  2. Select 你的初始 ViewController
  3. 进入Editor > Embed in > Navigation Controller

或者您可以通过参考@jignesh 的回答以编程方式完成