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 |
Tags
- Refactoring
- MVVM
- Xcode
- tableView
- ribs
- swiftUI
- map
- Observable
- ios
- 애니메이션
- clean architecture
- UITextView
- rxswift
- SWIFT
- uitableview
- combine
- HIG
- swift documentation
- RxCocoa
- UICollectionView
- 리펙터링
- 리펙토링
- uiscrollview
- Human interface guide
- Protocol
- 리팩토링
- 스위프트
- Clean Code
- collectionview
- 클린 코드
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] ViewController에서 현재 보여지는 화면인지 확인하는 방법 (viewIfLoaded 사용) 본문
iOS 응용 (swift)
[iOS - swift] ViewController에서 현재 보여지는 화면인지 확인하는 방법 (viewIfLoaded 사용)
jake-kim 2021. 9. 1. 23:11viewIfLoaded 개념
- 뷰 컨트롤러의 뷰가 로드된 경우, UIView 표출
- 뷰 컨트롤러가 현재 화면에 보여지는지 확인하는 코드
viewIfLoaded?.window != nil // true이면 현재 보여지는 화면, flase이면 현재 보여지지 않는 화면
확인 - navigationController
- 두 번째 화면에서 notificationCenter로 각각 ViewController에서 viewIfLoaded?.window가 nil인지 체크
- 첫번째 화면
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(printSome), name: .noti, object: nil)
}
@objc func printSome() {
print("VC1 = \(viewIfLoaded?.window != nil)")
}
}
- 두번째 화면
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func didTapButton(_ sender: Any) {
NotificationCenter.default.post(name: .noti, object: nil)
print("VC2 = \(viewIfLoaded?.window != nil)")
}
}
extension Notification.Name {
static let noti = NSNotification.Name("noti")
}
- 결과
확인 - modal
- 준비
class ViewController3: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func didTapButton(_ sender: Any) {
NotificationCenter.default.post(name: .noti, object: nil)
print("VC3 = \(viewIfLoaded?.window != nil)")
}
}
- 결과: present는 보여지고 있는 형태
'iOS 응용 (swift)' 카테고리의 다른 글
Comments