1. loadView()
- 이 메서드는 뷰를 직접 프로그래밍 방식으로 설정할 때 사용된다(코드베이스)
- 스토리보드나 XIB 파일을 사용하는 경우 직접 구현할 필요는 없다
- 사용하지 않아도 상관 없지만 오류 발생 확률이 있다
override func loadView() {
// UIView를 직접 생성하여 뷰로 설정합니다.
let view = UIView()
view.backgroundColor = .white
// UIButton을 추가합니다.
let button = UIButton(type: .system)
button.setTitle("Press Me", for: .normal)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
view.addSubview(button)
// 생성한 UIView를 뷰 컨트롤러의 뷰로 설정합니다.
self.view = view
print("loadView - 코드로 뷰를 직접 설정합니다.")
}
2. viewDidLoad()
- 뷰가 메모리에 로드된 후 호출된다
- 뷰의 초기 설정, 데이터 로드, UI 초기화 작업을 수행한다
- loadView 미사용 시 문제가 없을 경우에는 해당 메서드에 때려 박아도 된다
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad - 뷰가 메모리에 로드된 후 호출됩니다.")
// 초기 설정 작업을 여기서 수행합니다.
}
3. viewWillAppear(_ animated: Bool)
- 뷰가 뷰 계층에 추가되기 직전에 호출된다
- 뷰가 나타나기 직전에 필요한 작업을 수행한다
- view의 UI가 만들어진 후 데이터가 호출되면 리로드 작업이 다시 필요할 수 있으므로 추가 수정을 방지하기 위해 사용하면 좋을 것 같다
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear - 뷰가 뷰 계층에 추가되기 직전에 호출됩니다.")
// 뷰가 나타나기 직전에 필요한 작업을 여기서 수행합니다.
}
4. viewDidAppear(_ animated: Bool)
- 뷰가 뷰 계층에 추가된 후 호출된다
- 뷰가 화면에 완전히 나타난 후 필요한 작업을 수행한다
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("viewDidAppear - 뷰가 뷰 계층에 추가된 후 호출됩니다.")
// 뷰가 완전히 나타난 후 필요한 작업을 여기서 수행합니다.
}
5. viewWillDisappear(_ animated: Bool)
- 뷰가 뷰 계층에서 제거되기 직전에 호출된다
- 뷰가 사라지기 직전에 필요한 작업을 수행한다
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("viewWillDisappear - 뷰가 뷰 계층에서 제거되기 직전에 호출됩니다.")
// 뷰가 사라지기 직전에 필요한 작업을 여기서 수행합니다.
}
6. viewDidDisappear(_ animated: Bool)
- 뷰가 뷰 계층에서 제거된 후 호출된다
- 뷰가 화면에서 완전히 사라진 후 필요한 작업을 수행한다
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("viewDidDisappear - 뷰가 뷰 계층에서 제거된 후 호출됩니다.")
// 뷰가 완전히 사라진 후 필요한 작업을 여기서 수행합니다.
}
7. viewWillLayoutSubviews()
- 뷰의 서브뷰가 레이아웃되기 직전에 호출된다
- 뷰의 레이아웃을 업데이트하기 전에 필요한 작업을 수행한다
- view 내부에 포함되는 lable, button 등을 통틀어서 subview 라고 함
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("viewWillLayoutSubviews - 뷰의 서브뷰가 레이아웃되기 직전에 호출됩니다.")
// 뷰의 레이아웃을 업데이트하기 전에 필요한 작업을 여기서 수행합니다.
}
8. viewDidLayoutSubviews()
- 뷰의 서브뷰가 레이아웃된 후에 호출된다
- 뷰의 레이아웃이 업데이트된 후 추가적인 레이아웃 작업을 수행한다
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("viewDidLayoutSubviews - 뷰의 서브뷰가 레이아웃된 후에 호출됩니다.")
// 뷰의 레이아웃이 업데이트된 후 추가적인 레이아웃 작업을 여기서 수행합니다.
}
9. deinit
- 뷰 컨트롤러가 메모리에서 해제될 때 호출된다
- 메모리 해제 전 필요한 정리 작업을 수행한다
deinit {
print("deinit - 뷰 컨트롤러가 메모리에서 해제될 때 호출됩니다.")
// 메모리 해제 전 필요한 정리 작업을 여기서 수행합니다.
}
'🍎 Swift > iOS 학습 노트' 카테고리의 다른 글
[강의노트👩🏻💻] CoreData 코어 데이터 (4) | 2024.07.11 |
---|---|
[Swift 🍎] configureUI() (0) | 2024.07.10 |
[강의노트👩🏻💻] ViewController 생명주기 이론 (0) | 2024.07.09 |
[Snapkit] offset & inset (1) | 2024.07.01 |
[Swift 🍎] Snapkit 활용하기 (3) | 2024.06.30 |