hızlı
Kısa cevap
Bunun NotificationCenter
yerine bir gözlemci kullanın 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
}
Uzun cevap
Bir uygulamanın arka plandan ne zaman geri döndüğünü öğrenmek için, NotificationCenter
yerine bir gözlemci kullanın viewWillAppear
. İşte hangi olayların ne zaman gerçekleştiğini gösteren örnek bir proje. (Bu, bu Objective-C cevabının bir uyarlamasıdır .)
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")
}
}
Uygulamayı ilk başlattığınızda, çıktı sırası:
view did load
view will appear
did become active
view did appear
Ana ekran düğmesine bastıktan sonra uygulamayı tekrar ön plana getirdikten sonra çıktı sırası:
will enter foreground
did become active
Başlangıçta kullanmaya çalıştığınız Yani eğer viewWillAppear
o zaman UIApplication.willEnterForegroundNotification
ne istediğinizi muhtemelen.
Not
İOS 9 ve sonraki sürümler itibarıyla gözlemciyi kaldırmanıza gerek yoktur. Dokümantasyon durumları:
Uygulamanız iOS 9.0 ve sonraki sürümlerini veya macOS 10.11 ve sonraki sürümlerini hedefliyorsa, dealloc
yönteminde bir gözlemcinin kaydını silmenize gerek yoktur .
applicationWillEnterForeground:
Uygulamanızın etkin duruma ne zaman yeniden girdiğini belirlemek için kullanmalısınız .