Ⅰ. 설명
*아래 순서대로 운영체제가 실행시킴
1. viewDidLoad()
•
첫 번째 단계로, 뷰가 로드된 직후
•
뷰와 관련된 오브젝트들(IBOutlets, IBActions 등)에 접근 가능해짐
•
뷰가 만들어졌을 때 딱 한 번만 실행됨
2. viewWillAppear()
•
뷰가 화면에 나타나기 직전
◦
유저는 아직 화면에서 아무것도 볼 수 없음
◦
따라서 개발자는 이때 UI 컴포넌트(ex. Navigation bar)를 숨기거나 보이게 설정할 수 있음
•
여러번 실행될 수 있음
3. viewDidAppear()
•
뷰가 화면에 나타난 직후
◦
유저가 화면을 보게됨
◦
유저가 보았으면하는 효과(ex. 애니메이션, 카운트다운 타이머)를 넣으면 됨
•
여러번 실행될 수 있음
4. viewWillDisappear()
•
뷰가 화면에서 제거되기 직전
◦
유저가 화면에서 back버튼을 누르는 등 현재 화면에서 나가려고 하는 액션이 있을 때 실행됨
◦
더이상 필요하지 않은 효과를 제거(ex. 애니메이션 또는 타이머 멈추기)해야하는 시점
•
여러번 실행될 수 있음
5. viewDidDisappear()
•
뷰가 화면에서 제거된 직후
◦
유저는 더이상 화면을 볼 수 없음
•
뷰가 휴대폰의 메모리에서 지워지거나 하는 것은 아님
•
여러번 실행될 수 있음
Ⅱ. 코드로 이해해보기
1. 먼저 그림과 같은 스토리보드를 만들고, 각 함수(위 1~5번) 호출 시 메시지를 print 합니다. (아래 코드 참고)
•
왼쪽(흰색)
◦
이름 = ViewController1
◦
Button = ViewController2로 넘어가는 버튼. Kind: show(push)
ViewController1.swift
•
오른쪽(노랑색)
◦
이름 = ViewController2
◦
Back = ViewController1로 dismiss하는 버튼. function 이름: goBack
ViewController2.swift
2. Simulator를 실행시켜 봅니다.
a. 첫화면
Output
•
VC1이 로드되어 화면에 나오게 되므로 VC1의 viewDidLoad, viewWillAppear, viewDidAppear가 차례로 호출
b. Button 눌렀을 때
Output
•
VC2가 로드되어 화면에 나오게 되므로 VC2의 viewDidLoad, viewWillAppear, viewDidAppear가 차례로 호출
•
VC1 위에 VC2가 얹어진 모양이므로 VC1에는 변화 없음
c. Back 눌렀을 때
Output
•
VC2가 화면에서 사라지기 때문에 VC2의 viewWillDisappear, viewDidDisappear가 차례로 호출
3. 스토리보드의 Button의 segue방식을 수정합니다.
•
4. Simulator를 다시 실행시켜 봅니다.
a. 첫화면
b. Button 눌렀을 때
c. Back 눌렀을 때
Output
•
Back을 눌렀을 때 VC1을 다시 화면에 띄움
•
Button을 눌러 VC2로 가면서 VC1을 화면에서 완전히 지워버렸기 때문