Я пытаюсь программно создать UINavigationController и два UIVewControllers и иметь возможность переходить от первого VC ко второму VC и обратно с помощью навигационного контроллера. Я пробовал разные методы, чтобы заставить это работать. Я оставил некоторые строки в исходном коде закомментированными, чтобы дать подсказки о том, что я пробовал.
С текущим методом я получаю это предупреждение (оно не работает):
Предупреждение: Попытка представить ‹x.VC2: 0x7fd27240df00> на ‹x.VC1: 0x7fd27240db60>, представление которого не находится в иерархии окон!
В AppDelegate.swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let navcon = UINavigationController()
//navcon.viewControllers = [VC1(), VC2()] // tried this without success
navcon.viewControllers = [VC1()]
window = UIWindow()
window?.makeKeyAndVisible()
//window?.rootViewController = VC1() // one variation that I tried
window?.rootViewController = navcon.viewControllers[0]
return true
}
В VC1.swift:
var navcon: UINavigationController!
let vc2 = VC2()
//---------------------------------------------
override func viewDidLoad() {
super.viewDidLoad()
navcon = self.navigationController
//navcon?.viewControllers.append(vc2)
let x = navcon?.viewControllers
let n = x?.count
}
//---------------------------------------------
func triggeredFunction() {
self.present(vc2, animated: true, completion: nil)
//navcon.pushViewController(vc2, animated: true)
}