빠른
짧은 답변
NotificationCenter
대신 관찰자를 사용하십시오 viewWillAppear
.
override func viewDidLoad() {
super.viewDidLoad()
// set observer for UIApplication.willEnterForegroundNotification
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
}
// my selector that was defined above
@objc func willEnterForeground() {
// do stuff
}
긴 대답
앱이 백그라운드에서 언제 돌아 오는지 알아 보려면 NotificationCenter
대신 관찰자를 사용하십시오 viewWillAppear
. 다음은 언제 어떤 이벤트가 발생하는지 보여주는 샘플 프로젝트입니다. (이것은 이 Objective-C 답변 의 적응입니다 .)
import UIKit
class ViewController: UIViewController {
// MARK: - Overrides
override func viewDidLoad() {
super.viewDidLoad()
print("view did load")
// add notification observers
NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
}
override func viewWillAppear(_ animated: Bool) {
print("view will appear")
}
override func viewDidAppear(_ animated: Bool) {
print("view did appear")
}
// MARK: - Notification oberserver methods
@objc func didBecomeActive() {
print("did become active")
}
@objc func willEnterForeground() {
print("will enter foreground")
}
}
앱을 처음 시작할 때 출력 순서는 다음과 같습니다.
view did load
view will appear
did become active
view did appear
홈 버튼을 누른 다음 앱을 다시 포 그라운드로 가져온 후 출력 순서는 다음과 같습니다.
will enter foreground
did become active
원래 사용하려고한다면 그래서 viewWillAppear
다음 UIApplication.willEnterForegroundNotification
당신이 원하는 아마.
노트
iOS 9 이상에서는 관찰자를 제거 할 필요가 없습니다. 설명서 에는 다음 이 명시되어 있습니다.
앱이 iOS 9.0 이상 또는 macOS 10.11 이상을 대상으로하는 경우 해당 dealloc
방법으로 옵저버를 등록 해제 할 필요가 없습니다 .
applicationWillEnterForeground:
애플리케이션이 활성 상태를 다시 입력 한시기를 판별 하는 데 사용해야합니다 .