iOS 응용 (swift)
[iOS - swift] ViewController에서 현재 보여지는 화면인지 확인하는 방법 (viewIfLoaded 사용)
jake-kim
2021. 9. 1. 23:11
viewIfLoaded 개념
- 뷰 컨트롤러의 뷰가 로드된 경우, 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는 보여지고 있는 형태
