Как узнать, когда контроллер вернулся из фона? - PullRequest
10 голосов
/ 21 августа 2010

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

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

Ответы [ 3 ]

20 голосов
/ 21 августа 2010

Вы можете заставить свой контроллер наблюдать уведомление 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
}
3 голосов
/ 15 февраля 2018

для Swift 4.2:

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



@objc func appWillEnterForeground() {
    // run when app enters foreground
}
0 голосов
/ 23 августа 2010

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

...