У меня есть ViewController, который состоит из экранов, построенных программно. Допустим, FirstV c. При нажатии кнопки «Я хочу» в окне «Навигационный контроллер с моего раскадровки» (как видно на рисунке)
Как видно на рисунке, мой SecondViewController встроен в контроллер навигации
С моим текущим кодом в забаве OnButtonClick c. Выдает ошибку не может pu sh контроллер навигации, внутренний контроллер навигации. Что является правдой. Но если я только создаю экземпляр ViewController с моей главной панели, я не смогу видеть верхнюю панель навигации.
Кроме того, я не хочу использовать .present, так как я хочу изменить все окно. Квадратные скобки, представляющие раскадровку.
FirstV c <---> [Navigatiob-> Tab-> SecondVC]
Каковы возможные способы получения ссылки, представленной пунктирные линии?
Делегат сцены
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
//
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
let navigation = AppNavigationView()
let viewController = ViewController()
navigation.pushViewController(viewController, animated: true)
window?.rootViewController = navigation
window?.makeKeyAndVisible()
}
Функция в ViewController
@objc func buttonTapped(){
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "navC") as! UINavigationController
navigationController?.pushViewController(viewController, animated: true)
self.present(viewController, animated:true, completion:nil)
print("button tapped")
}
Журнал ошибок
- Перешел в активное состояние --- 2020-04-02 20: 49: 43.978018 + 0530 Snug [13340: 370457] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Нажатие контроллера навигации не поддерживается * стек вызовов первого выброса: