UIView lifecycle, Present, Full & Card Screen
UIViewController lifecycle
- init() - 생성
- viewDidLoad (뷰가 로드됨) -> 초기화작업 / 메모리상에서의 로드 / 뷰가만들어질때 한번만 호출
- viewWillAppear (뷰가 나타날것) -> 보여지기직전에 호출 / 보여질때마다 호출
- viewDidAppear (뷰가 나타났다) -> 뷰가 화면에 나타난 직후 / 보여진직후에 호출
- viewWillDisappear (뷰가 사라질 것이다) -> 뷰가 사라지기 직전
- viewDidDisappear (뷰가 사라졌다) -> 뷰컨트롤러가 뷰가 제거되었음을 알려줌 / 사라진직후
- deinit() - 해제

버튼을 사용해서 다음화면으로 넘어갈때의 뷰생명주기를 확인해보자 ( ios12버전)
- 첫화면이 뜨자 나타나는 함수
1 | viewDidLoad--[뷰가로드됨] |
- 버튼을 클릭시 나타나는 함수
1 | ----------- [ Nextvc viewDidLoad ] ---------- |
- Next View에서 버튼을클릭해서 첫화면으로 돌아가면 나타나는 함수
1 | Nextvc viewWillDisappear--[뷰사라질것] |

버튼을 사용해서 다음화면으로 넘어갈때의 뷰생명주기를 확인해보자 ( ios13버전)

1 | isModalInPresentation = true // 드래그로 끌어내려도 화면이 내려가지 않음 |
Presenting(나를 띄운!!!) vs Presented(내가 띄운!!!)
1 | presentingViewController?.view.backgroundColor = .orange |
- 나를띄운놈에게 접근해서 그클래스의 프로퍼티에 접근하려했더니 되지않음.
- presentingViewController -> UIView속성이고 나는 그 부모를 이용해서 view를 만들었기때문에 내가만든 클래스의 프로퍼티에 presentingViewController사용해서 접근할수는 없음.
- 타입캐스팅을 통해 내가띄운놈이 ViewController이 맞는지 물어보고 맞다면 vc변수로 사용을하겠다. 그리고 그것에서 프로퍼티에 접근해서 변경해줄수 있다.
1 | guard let vc = presentingViewController as? ViewController else { return } |
ios12버전의 뷰방식(Full Screen)

1 | nextVC.modalPresentationStyle = .fullScreen //풀스크린모드 (#available(iOS 12.0, *)) |
ios 13버전의 Card style
