2011-01-05 14 views
8

Dowiedziałem się, że moja aplikacja nie zachowuje się dobrze w wielozadaniowości systemu iOS w przypadku, gdy pewien ViewController był aktywny podczas zamykania aplikacji. Ten kontroler widoku musi zebrać najnowsze informacje, aby je wyświetlić. Do tej pory kod inicjujący do zbierania tych informacji był umieszczony tylko w viewWillAppear.UIApplicationWillEnterForegroundNotification versus viewWillAppear - wzór do inicjalizacji?

Teraz dowiedziałem się, że viewWillAppear nie zostanie wywołany, gdy widok pojawi się z tła.

Ponieważ świat mógł ulec zmianie od momentu wysłania aplikacji na miejsce, kontroler widoku musi zostać ponownie zainicjowany. Rozumiem, że mogę zarejestrować się w usłudze UIApplicationWillEnterForegroundNotification. Jest to jednak uruchamiane za każdym razem, gdy aplikacja wraca na pierwszy plan, bez względu na to, czy użytkownik aktualnie nawiguje do tego konkretnego kontrolera viewController.

Czy masz wzorzec, jak korzystać z UIApplicationWillEnterForegroundNotification tylko wtedy, gdy ViewController jest aktywny w znaczeniu "pojawi się wkrótce"?

Odpowiedz

7

Zarejestruj się pod numerem UIApplicationWillEnterForegroundNotification w viewWillAppear: i wyrejestruj w viewWillDisappear:. W ten sposób otrzymasz powiadomienie tylko wtedy, gdy widok będzie rzeczywiście widoczny.

+0

To brzmi tak oczywiste, prawda. Potwierdziłem, że to działa. Dziękuję Ci bardzo. – Miriam