본문 바로가기

Tech/iOS

[iOS] Day 19 - 첫 화면 구현

728x90

App의 첫 화면 구현시

분명 첫 화면 구현은 했는데 simulator에서

검은 화면만 뜬 경험이 있을 수도 있다 

해결점을 알아보자


첫 화면 구현

//시작 화면전에 통제 가능
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
        //true이면 ViewController , false SearchTableViewController
        //SceneDelegate에 있으면 안되는 코드 -> 시작할때마다 false
        //UserDefaults.standard.set(false, forKey: "First") -> 다른 화면에 배치해야한다
        //UserDefaults.standard.set(false, forKey: "First")
        
        var window: UIWindow?
        
        guard let scene = (scene as? UIWindowScene) else { return }
        window = UIWindow(windowScene: scene)
        
        if UserDefaults.standard.bool(forKey: "First") {
            
            
            //첫번째 화면 구성
            let sb = UIStoryboard(name: "Trend", bundle: nil)
            let vc = sb.instantiateViewController(withIdentifier: "ViewController") as! ViewController
            
            //코드로 루트뷰컨트롤러 지정 가능
            window?.rootViewController = vc
            
            //중요 디바이스 화면에 비춰주는 역할
            window?.makeKeyAndVisible()
        } else {
            
            window = UIWindow(windowScene: scene)
            
            //첫번째 화면 구성
            let sb = UIStoryboard(name: "Search", bundle: nil)
            let vc = sb.instantiateViewController(withIdentifier: "SearchTableViewController") as! SearchTableViewController
            
            //코드로 루트뷰컨트롤러 지정 가능 , 네비게이션컨트롤러 임베디드
            
            
            //중요 디바이스 화면에 비춰주는 역할
            window?.makeKeyAndVisible()
            
        }       
    }

위의 코드를 SceneDelegate에 작성한다

지금까지 했던 코드랑 별반 차이가 없지만 

왜 화면이 보이지 않을 수가 있을까?

makeKeyAndVisible()을 빼먹는 순간 검은색화면만 나오는 불상사가 발생하게 된다

그때부터는 stackoverflow 나 무한 구글링의 늪에 빠질 수 있으니 꼭 써주자

과제 중 주의점을 나도 알고 싶지 않았다

'Tech > iOS' 카테고리의 다른 글

[iOS] Day 23 - Computed Property  (0) 2022.07.26
[iOS] Day 22 - Xcode Tip, bundle File 생성 방법  (0) 2022.07.25
[iOS] Day 19 - 데이터 전달  (0) 2022.07.22
[iOS] Day 18 - Property  (0) 2022.07.21
[iOS] Day - 18 화면 전환 코드 구현  (0) 2022.07.21