티스토리 뷰

TIL

[TIL] 2022 / 07 / 22

희철 2022. 7. 23. 01:43

데이터 전달

 

 

세 가지 단계를 거침

 

1. 전환되는 화면에 정보를 받을 공간인 프로퍼티를 만들어야함.

 

근데 꼭 프로퍼티를 한 번 거쳐서 데이터를 전달해야되는 의문이 듦

-> Outlet에 바로 데이터를 넣게되면 인스턴스가 만들어지기 전에 데이터를 넣는 느낌이라 불가능.

 

2. 이전화면에서 만든 인스턴스를 통해 1번에서 만들어놓은 프로퍼티에 접근해서 값을 저장

vc가 가리키는 뷰컨트롤러 내에서 1번에서 얘기한 프로퍼티를 vc.movieData로 접근하는 것.

 

3. 데이터와 화면은 별개이므로, 받은 데이터를 뷰에 표시해주는 과정을 진행해야함

1번에서 만든 프로퍼티에 2번 과정에서 데이터를 받았으므로 viewDidLoad내에서 뷰에 표시해줌.

 

 

 

 

앱 첫 시작 화면

 

 

SceneDelegate의 scene메서드에서 작성.

 

위의 상태가 디폴트 상태이다.

 

window

-> 수많은 뷰컨트롤러들이 있는데 아이폰에 보여지기 위해서는 UIWindow라고 하는 객체가 필요하며, 이 객체한테 투영시키는 것.

즉, 어떤 화면을 보여줄지 관리해주는 역할

 

윈도우가 없으면 화면이 검은색화면으로 나올거임.

 

 

먼저, 디폴트상태에서 와일드카드를 지우고 아래처럼 작성해줌..

 

다음은 화면 전환을 할 때랑 똑같음.

makeKeyAndVisible이 없으면 안됨!!

 

이때, 조건에 따라서 시작화면을 정해줄 수도 있음.

평소에 썼던 코드와 똑같이 작성하면됨.

 

다만 scene메서드 안에서 적음으로써 앱의 첫 화면이 결정되는 것.

 

위와 같이 첫 화면을 정해주면 시작 스토리보드가 정해져있어도 SceneDelegate에서 정해준 화면이 나옴.

 

 

 

Window의 rootViewController변경

 

 

위의 코드에서 기억해야 할 부분은 윈도우가 보여지도록 하는 코드.

window?.rootViewController = vc

window?.makeKeyAndVisible() // 윈도우가 보여지도록

 

추가로 알아야 할 코드

// iOS 13 이상, scenedelegate를 쓸 때 동작하는 코드
let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene // 앱을 다시 처음부터 실행해주는 코드
let sceneDelegate = windowScene?.delegate as? SceneDelegate // 신딜리게이트 클래스에 접근
        
let sb = UIStoryboard(name: "Trend", bundle: nil)
guard let vc = sb.instantiateViewController(withIdentifier: "StartViewController") as? StartViewController else { return }
        
sceneDelegate?.window?.rootViewController = vc
sceneDelegate?.window?.makeKeyAndVisible()

 

앱을 다시 처음부터 실행해주는 코드는 거의 대부분 저 코드를 사용.

 

근데 connectedScenes에 여러 개가 있을 수 있음.

-> 아이패드에서는 여러 개의 씬이 보여질 수 있지만 아이폰에서는 하나밖에 없음.

 

아무튼 SceneDelegate에 접근해서 이전에 작성해준 코드를 그대로 작성해주면됨.

 

 

=> 확실하게 알고 가도록 추가로 공부해보기

 

 

______________________________________________________________________________________________________

 

이후엔 평가과제 진행

 

-> 다마고치 선택화면 컬렉션뷰 UI 구현

-> 상세 팝업 화면 UI 뼈대 구현

-> 메인화면 UI 뼈대 구현

-> 설정화면 UI 구현

'TIL' 카테고리의 다른 글

[TIL] 2022 / 07 / 24  (0) 2022.07.24
[TIL] 2022 /07 / 23  (0) 2022.07.23
[TIL] 2022 / 07 / 21  (0) 2022.07.21
[TIL] 2022 / 07 / 20  (0) 2022.07.21
[TIL] 2022 / 07 / 19  (0) 2022.07.19
댓글
최근에 올라온 글
Total
Today
Yesterday