Я не уверен, что другие ответы адекватны, поэтому я добавлю свои 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)
}