첫 화면으로 전환 (기본적인 화면 전환 방식을 사용하면 안 됨 - push/present)
데이터 초기화 (UserDefault 데이터 초기화)
테마 바꿀 때
사용자가 데이터를 복구했을 때
학생 모드/튜터 모드 -> 사용자 전환 시
@objc func resetButtonClicked() {
// 시작 화면 초기화
// iOS 13.0+ SceneDelegate 쓸 때 동작하는 코드
// 기존에 쌓여있던 화면들은 메모리에서 전부 내려가게 된다.
// 앱의 상태를 바꿀 때 window를 사용하는 편이다.
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: "ViewController") as? ViewController else { return }
sceneDelegate?.window?.rootViewController = vc
sceneDelegate?.window?.makeKeyAndVisible()
}
화면 전환에서 헷갈릴만한 지점
화면 전환하면서 값 전달
에러 체크
옵셔널 값 체크
따로 따로 프로퍼티 생성하지 않고, 하나의 구조체 전체를 전달 받는 것이 나은 이유
시작 화면의 변경
앱을 사용할 때마다 로그인/회원가입/인트로 화면이 계속해서 나온다면 사용자 입장에서 많이 불편할 것이다. 따라서 이 부분에 대한 해소가 필요하다.
로그인 화면
toss
UIWindow
시작 화면 분기 처리
로그아웃 (첫 화면으로 돌아가고 싶을 때, 처음부터 시작하고 싶을 때)