Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- UICollectionView
- 클린 코드
- 스위프트
- tableView
- clean architecture
- map
- Xcode
- Observable
- 애니메이션
- swiftUI
- 리팩토링
- MVVM
- RxCocoa
- Human interface guide
- swift documentation
- UITextView
- ios
- Refactoring
- collectionview
- SWIFT
- Clean Code
- uiscrollview
- 리펙토링
- Protocol
- ribs
- uitableview
- rxswift
- combine
- HIG
- 리펙터링
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] UINavigationController, navigationController 접근 시 주의사항 (viewDidLoad 시점에 navigationController가 nil인 이유) 본문
iOS 응용 (swift)
[iOS - swift] UINavigationController, navigationController 접근 시 주의사항 (viewDidLoad 시점에 navigationController가 nil인 이유)
jake-kim 2024. 2. 23. 00:09UINavigationController 접근 주의사항
- UIViewController에서 navigationController 접근 시 viewDidLoad 시점에서는 nil임을 주의
ex) VC를 navgationViewController로 push하여 viewDidLoad시점과 viewWillAppear시점에 naviagtionController 출력
class SecondVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("(viewDidLoad) naviVC:", navigationController)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("(viewWillAppear) naviVC:", navigationController)
}
}
// (viewDidLoad) naviVC: nil
// (viewWillAppear) naviVC: Optional(<UINavigationController: 0x13f00b000>)
viewDidLoad 시점에 navigationController가 nil인 이유
- viewDidLoad의 의미 먼저 파악하기
- UIViewController의 view를 참조하거나 메서드를 호출할 때, view가 load되는데 이 때 viewDidLoad가 호출됨
- 즉 viewDidLoad는 뷰 컨트롤러가 네비게이션 컨트롤러에 삽입되었다는 것을 의미하지 않기 때문에 viewDidLoad시점에는 navigationController가 nil
* 전체 코드: https://github.com/JK0369/ExNavigationController
* 참고
- https://stackoverflow.com/questions/10982567/why-is-self-navigationcontroller-null-in-viewdidload
'iOS 응용 (swift)' 카테고리의 다른 글
Comments