Как узнать, когда контроллер возобновил работу из фона?

Итак, я хочу поддерживать переключение приложений в моем будущем приложении для iPhone, и я реализовал все соответствующие методы делегата в своем делегате приложения. Поэтому, когда пользователь возобновляет работу приложения, я вижу его активность в NSLog и все такое. Однако как узнать, что мое приложение возобновило работу контроллера? Есть ли метод, который я могу добавить в свой контроллер, чтобы сообщить мне, что приложение возобновило работу в указанном контроллере? Причина, по которой я спрашиваю, заключается в том, что мое приложение обрабатывает свою собственную схему URL-адресов, и я хочу обновить представление в зависимости от запущенного URL-адреса. Любая помощь будет оценена.

заранее спасибо


person Raphael Caixeta    schedule 21.08.2010    source источник


Ответы (3)


Вы можете заставить свой контроллер наблюдать за уведомлением UIApplicationWillEnterForeground. Вероятно, это будет выглядеть примерно так:

- (void) viewDidLoad
{
    [super viewDidLoad];
    //do stuff here
    if(&UIApplicationWillEnterForegroundNotification) { //needed to run on older devices, otherwise you'll get EXC_BAD_ACCESS
        NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
        [notificationCenter addObserver:self selector:@selector(enteredForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
    }


}
- (void)enteredForeground:(NSNotification*) not
{
    //do stuff here
}
person Elfred    schedule 21.08.2010

Для Свифт 4.2:

 NotificationCenter.default.addObserver(self,
 selector: #selector(appWillEnterForeground),
 name: UIApplication.willEnterForegroundNotification, 
 object: nil)



@objc func appWillEnterForeground() {
    // run when app enters foreground
}
person chawki    schedule 15.02.2018
comment
Количество открывающих и закрывающих скобок не равно. - person ittgung; 16.02.2018

Вы также можете просто переопределить - (void)applicationDidBecomeActive:(UIApplication *)application в делегате приложения, чтобы оно делало все, что вы хотите, когда оно возвращается из фона. Если вы хотите, чтобы конкретное представление получало сообщение, а не делегат приложения, вам необходимо зарегистрироваться для получения уведомления, как описано Эльфредом выше.

person fogelbaby    schedule 23.08.2010