Вызов метода, когда приложение вызывается из фона - PullRequest
1 голос
/ 26 января 2012

В таких приложениях, как Foursquare, когда я нажимаю кнопку «Домой», приложение переходит в фоновый режим. Затем, когда я нажимаю на его значок, он загружает обратно содержимое на экране.

Когда я отправляю свое приложение в фоновый режим и затем возвращаю его обратно, оно не загружает содержимое обратно на экран. Я ввел свой код в методе viewDidAppear, но он не выполняется.

Как можно загрузить содержимое приложения, когда оно станет активным?

Ответы [ 3 ]

5 голосов
/ 26 января 2012

Вам необходимо ответить на - (void)applicationDidBecomeActive:(UIApplication *)application или - (void)applicationWillEnterForeground:(UIApplication *)application или эквивалентные UIApplication уведомления. Вызовы UIViewController жизненного цикла, например viewDidAppear, не инициируются переходами жизненного цикла приложения.

3 голосов
/ 26 января 2012

smparkes предложение верно. Вы можете зарегистрироваться на UIApplicationDidBecomeActiveNotification или UIApplicationWillEnterForegroundNotification. Эти уведомления вызываются после вызова этих методов (написанных smparkes). В обработчике этого уведомления делай что хочешь. Например, в viewDidLoad для вашего контроллера зарегистрируйте следующее уведомление:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(doUpdate:)
                                             name:UIApplicationDidBecomeActiveNotification object:nil];

Не забудьте убрать в dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self];

Наконец, doUpdate метод может быть следующим

-(void)doUpdate:(NSNotification*)note
{
    // do your stuff here...
}

Я предлагаю вам прочитать Справочник по классу UIApplicationDelegate . В частности, прочитайте о Мониторинг изменений состояния приложения .

Надеюсь, это поможет.

0 голосов
/ 18 января 2015

Предположим, что вы хотите прослушать UIApplicationDidBecomeActiveNotification, вот код ObjC, который может вам помочь.

[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification
object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {

    // custom code goes here.
}];
...