티스토리 뷰
뷰컨트롤러 생명주기
viewDidLoad()
-> 컨트롤러의 뷰가 메모리에 올라갔을때 실행됨.
viewWillAppear()
-> 뷰컨트롤러에 뷰가 뷰 계층구조에 추가될 예정이라고 알려줌.
viewDidAppear()
-> 뷰컨트롤러에 뷰가 뷰 계층구조에 추가되었다고 알려줌.
viewWillDisappear()
-> 뷰컨트롤러에 뷰가 뷰 계층구조에서 지워질 예정이라고 알려줌.
viewDidDisappear()
-> 뷰컨트롤러에 뷰가 뷰 계층구조에 지워졌다고 말해줌.
실습을 통해 언제 실행되는지 확인해봄.
시뮬레이터를 실행시켰을때
탭바를 이용해 뷰를 바꿔주었을때
다시 이전 화면으로 탭바를 이용해 돌아갔을때
여기까지 알 수 있는 점
-> 화면이 처음 보여질때만 viewDidAppear가 실행되고 그 이후엔 실행되지않음.
-> 보여질 뷰컨트롤러의 viewWillAppear가 가장 먼저 실행되고, 지워질 뷰컨트롤러의 viewWillDisappear, viewDidDisappear가 실행되고 나서야 viewDidAppear가 실행돼서 뷰가 보여짐.
Present Modally로 화면을 띄웠을 때(page sheet)
새로운 화면을 처음 띄울때처럼 위의 세 개만 실행됨
-> 왼쪽 사진에서 볼 수 있듯이 뒤의 뷰가 남아있으므로 disappear관련 함수가 실행되지 않음.
위와 다르게 fullScreen으로 화면을 띄웠을 때
이전의 뷰가 안보이게되므로 disappear관련 함수가 실행됨.
unwind로 뷰를 내렸을때
신기하게 돌아갈 뷰가 보여지고 난 뒤에 이전 뷰가 사라짐.
위에서 modal하게 띄운 뷰를 내렸을때
-> 위에서 말했듯이 이미 뒤의 뷰가 보여지고 있었으므로 appear관련 함수가 실행되지않음.
Push로 네비게이션에 연결된 화면을 띄울 때
탭바와 다름(Push라 그런듯)
-> 탭바에선 새로운 뷰가 메모리에 올라가기전에 이전 뷰의 viewWillDisappear가 실행됐는데, 네비게이션의 Push에서는 다음 뷰의 viewDidLoad가 먼저 실행됨
백버튼으로 다시 이전 화면으로 돌아갈 때(Pop)
마찬가지로 탭바와 다름(Pop이라 그런듯)
-> 다음 뷰의 viewWillAppear보다 이전 뷰의 viewWillDisappear가 먼저 실행됨.
UserDefaults로 딕셔너리 저장
let dic: [String: String] = [:]
UserDefaults.standard.set(dic, forKey: "dic")
방법은 똑같지만 데이터를 불러올 때 주의해야함.
[String: Any]? 형태로 반환되기때문에 만약 값을 쓰기 위해서는 as를 이용해 바꿔주어야함.
코드로 뷰컨트롤러 띄우기
let sb = UIStoryboard(name: "Main", bundle: nil)
guard let vc = sb.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else { return }
vc.modalPresentationStyle = .fullScreen
// modalPreesentationStyle은 원하는대로 정하면됨.
self.present(vc, animated: true)
여기서 주의해야 할 점은 뷰컨트롤러의 Storyboard ID를 입력하고 그 ID를 withIdentifier에 입력해야한다.
Alert에서 버튼을 눌렀을 때 액션을 원하면 present의 completion이 아닌 UIAlertAction의 handler에서 작성.
______________________________________________________________________________________________________
넷플릭스 과제 추가 구현
1. 로그인 뷰 만듦
-> 회원가입과 로그인 버튼 구현
-> 아이디와 비밀번호를 UserDefaults로 확인 후 맞으면 영화목록 뷰를 띄우고, 틀리거나 없는 경우엔 alert띄움.
2. 로그인뷰에서 회원가입버튼을 누르면 회원가입화면을 띄움.
3. 회원가입이 제대로 이루어지면 alert와 함께 회원가입뷰가 내려가고 로그인뷰가 나타나게함.
'TIL' 카테고리의 다른 글
[TIL] 2022 / 07 / 18 (0) | 2022.07.18 |
---|---|
[TIL] 2022 / 07 / 17 (0) | 2022.07.17 |
[TIL] 2022 / 07 / 15 (0) | 2022.07.16 |
[TIL] 2022 / 07 / 14 (0) | 2022.07.15 |
[TIL] 2022 / 07 / 13 (0) | 2022.07.13 |
- Total
- Today
- Yesterday