iOS13 SceneDelegate 배포 및 밀어내기 마이그레이션 시 솔루션

5258 단어 SwiftiOS13

입문


오랜만에 0부터 앱을 만들었는데 왠지 모르게 SceneDelegate.swift가 자동으로 생성되고 AppDelegate의 생명주기 함수군이 이동하기 때문에 AppDelegate는 시원한 인상을 준다.
개발을 시작하자마자 넘어졌지만 메인 화면(Main. Stroryboard)에서 Push 이전을 할 수 없는 사건이 발생했습니다...
평소 눈에 띄지 않는 부분이라 문제를 해결하는 데 많은 시간이 걸렸다
같은 일에 걸려 넘어진다면 참고하시기 바랍니다.

본론



<해결하고 싶은 내용>


버튼을 눌러 코드를 ExamViewController로 밀어냄

<현황>


화면에서 "Button"을 클릭하면 tapButton 함수가 호출됩니다.
이것은 플로팅 이름 "Exam", Storyboard ID "Exam"으로 정의된 ExamView Controller를 실례화한 것으로 현재까지 문제가 없습니다.
푸시 함수를 실행해도 푸시 이동을 하지 않습니다.

<해결 방법>


SceneDelegate.swift
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

        guard let _ = (scene as? UIWindowScene) else { return }

        self.window?.rootViewController = createFirstViewController() // <- 新規追加
        self.window?.makeKeyAndVisible() // <- 新規追加
    }

// 途中省略 ----

extension SceneDelegate { // <- 新規追加 & createFirstViewController関数作成

    func createFirstViewController() -> UINavigationController {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let viewController = storyboard.instantiateInitialViewController() as! ViewController

        let navigationController = UINavigationController()
        navigationController.view.backgroundColor = .white
        let firstViewController = viewController
        navigationController.viewControllers = [firstViewController]
        navigationController.setNavigationBarHidden(true, animated: false)
        return navigationController
    }

}
ain의 View Controller 아래에서 Navigation Controller를 정의하지 않았기 때문에 이런 현상이 발생했습니다.
위의 코드는 SceneDelegate입니다.swift에서 추가, 문제 해결!

좋은 웹페이지 즐겨찾기