[Xcode] Push segues can only be used when the source controller is managed by an instance of UINavigationController.
Push segues can only be used when the source controller is managed by an instance of UINavigationController.
위와 같은 에러가 떴을 땐 대부분의 문제는 UINavigationController를 연결하지 않아서 생기는 오류이다.
하지만 나는 위의 문제외의 다른 문제가 발생해서 생기는 오류의 해결법에 대해서 작성하겠다.
[문제]
현재 내 상황은 로그인VC에서 MainVC를 연결하고 MainVC에서 버튼을 클릭하면 Push로 화면 전환을 하도록 만들었다. (이때 MainVC는 UINavigationViewController와 연결되어 있다.)
하지만 Push를 코드를 작성하면 아무런 반응이 없었고 Segue로 연결하면 위의 오류가 떠서 App이 멈추게 된다.
[해결]
실패 Version
나는 로그인VC에서 MainVC로 아래의 코드로 화면전환을 했다.
let alStoryboard = UIStoryboard(name: "Main", bundle: nil) //스토리보드 결정
let alarmVC = alStoryboard.instantiateViewController(identifier: "MainViewController")
alarmVC.modalTransitionStyle = .coverVertical
alarmVC.modalPresentationStyle = .fullScreen
self.present(alarmVC, animated: true, completion: nil)
이렇게 InstantiateViewController로 MainVC를 띄우면 그냥 MainVC만 띄워지게 되어 UINavigationViewController를 포함하지 않게되어 에러가 뜨게된다.
성공 Version
let alStoryboard = UIStoryboard(name: "Main", bundle: nil) //스토리보드 결정
let alarmVC = alStoryboard.instantiateInitialViewController()
alarmVC?.modalTransitionStyle = .coverVertical
alarmVC?.modalPresentationStyle = .fullScreen
self.present(alarmVC!, animated: true, completion: nil)
이렇게 instantiateInitialViewController()로 화면을 전환하면 Initial인 네비(Main뷰컨이 있는)로 전환하게 된다.
Author And Source
이 문제에 관하여([Xcode] Push segues can only be used when the source controller is managed by an instance of UINavigationController.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rlawnstn01023/Xcode-Push-segues-can-only-be-used-when-the-source-controller-is-managed-by-an-instance-of-UINavigationController저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)