Панель навигации не отображается в Swift 5

#ios #swift #xcode #uinavigationcontroller

Вопрос:

Я работал над приложением для iOS и пытаюсь отобразить панель навигации в своем приложении. Я использую раскадровку, чтобы просто работать над некоторым базовым пользовательским интерфейсом, но для другой части, такой как панель навигации, я пытаюсь реализовать ее с помощью кода.

В файл 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, и я могу его видеть, но я не вижу панели навигации.

Поэтому мне было интересно, не ошибся ли я при написании кода для отображения панели навигации…

Кто-нибудь знает, чего мне здесь не хватает?

Ответ №1:

функциональное приложение(приложение: UIApplication, didFinishLaunchingWithOptions запускопции: [NSObject: AnyObject]?) -> Бул {

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

}

Ответ №2:

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

Вы не можете видеть панель навигации, потому что вы не встраиваете свой текущий контроллер просмотра в навигационный контроллер.

Ответ №3:

Поскольку вы используете раскадровку, вам следует встроить свой ViewController в навигационный контроллер. Вы можете сделать это с помощью,

  1. сначала откройте свой Main.storyboard файл
  2. Выберите свой начальный контроллер просмотра
  3. Вхожу в Editor > Embed in > Navigation Controller

или вы могли бы сделать это программно, сославшись на ответ @jignesh