Контроллер UiNavigation в приложении - PullRequest
1 голос
/ 23 июня 2019

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

Я создал объект в приложении-делегате в Swift.но это не работает, как ожидалось.В iPhone-симуляторе отображается только панель навигации, и я ничего не могу сделать, кроме как посмотреть на панель.Фон полностью затемнен.

Ответы [ 3 ]

0 голосов
/ 23 июня 2019

В вашей AppDelegate в didFinishLaunchingWithOptions вы можете добавить эти строки кода

     let storyBoard = UIStoryboard(name: "Main", bundle: nil)
     let firstViewController = storyBoard.instantiateViewController(withIdentifier: "FirstViewController")
     let navController = UINavigationController()
     navController.navigationBar.isHidden = true
     window = UIWindow(frame: UIScreen.main.bounds)
     window?.rootViewController = navController(rootViewController: firstViewController)                             
     window?.makeKeyAndVisible()
0 голосов
/ 23 июня 2019

Я не уверен, что другие ответы адекватны, поэтому я добавлю свои 2 цента:

в ваш файл AppDelegate, вы можете создать ссылку на ваш UINavigationController, как предложено

    @UIApplicationMain
    class AppDelegate {
         var window: UIWindow?
         var firstViewController: FirstViewController?
         var baseNavController: UINavigationController?
         ...
         func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
              firstViewController = FirstViewController(nibName: "FirstViewController", bundle: nil)
              guard let first = firstViewController else { return //you gotta handle this somehow }
              baseNavController = UINavigationController(rootViewController: first)
              window = UIWindow(frame: UIScreen.main.bounds)
              window?.rootViewController = baseNavController
              window?.makeKeyAndVisible()
         }
    }

На данный момент, вы можете получить доступ к вашему baseNavController в любом месте вашего проекта, например:

if let delegate = UIApplication.shared.delegate as? AppDelegate {
    print(delegate.baseNavController)
}
0 голосов
/ 23 июня 2019

A NavigationViewController требуется rootViewController, я полагаю, что вы настраиваете свой код в AppDelegate, например, шоу:

window?.rootViewController = UINavigationController(rootViewController: UIViewController())

Чтобы решить эту проблему, rootViewController должно бытьконкретный ViewController не манекен ViewController.Вы должны создать ViewController как FirstViewController и внутри AppDelegate:

window?.rootViewController = UINavigationController(rootViewController: FirstViewController())
...