Dla tych, którzy chcą to zrobić w Swift:
Na init
:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(applicationWillResignActive), name: UIApplicationWillResignActiveNotification, object: nil)
Na deinit
:
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIApplicationWillResignActiveNotification, object: nil)
Reagowanie na zgłoszenia:
dynamic private func applicationWillResignActive() {
// Do things here
}
Jabłko zachęca nas, aby uniknąć dynamiczne wysyłki i Objective-C selektorów w miarę możliwości w Swift, ale jest to nadal najbardziej wygodny sposób zrobić to.
Musiałem zrobić małą poprawkę do działania tego kodu: dodając dwukropek do nazw metod w '@ selector', tj. Zamieniając' @selector (appWillResignActive) 'z' @selector (appWillResignActive:) 'i tym samym dla '@selector (appWillTerminate:)'). – Piovezan
@Piovezan, powodem, dla którego potrzebujesz ":", jest to, że niezależnie od tego, jak nazywasz swoją metodę, nadal musi przyjmować "..jeden tylko jeden argument (instancję NSNotification)." - Wystarczy Alt + kliknięcie lewym przyciskiem myszy na deklarację addObserver, aby dowiedzieć się więcej. –
Świetna odpowiedź! Dziękuję za uratowanie mnie ciągnącego włosy !! – Septronic