Как узнать, когда контроллер возобновился с фона?
Итак, я хочу поддерживать переход приложений в моем предстоящем приложении iPhone, и я внедрил все надлежащие методы делегатов в своем делетете приложения. Поэтому, когда пользователь возобновляет приложение, я могу видеть их активность в NSLog и все. Однако, как я могу сказать, что мое приложение возобновило работу контроллера? Есть ли способ, который я могу установить в контроллер, чтобы сообщить мне, что приложение возобновилось в указанном контроллере? Причина, о которой я спрашиваю, заключается в том, что мое приложение обрабатывает собственную схему URL-адресов, и я хочу обновить представление в зависимости от запуска URL-адреса. Любая помощь будет принята с благодарностью.
Заранее спасибо
Ответы
Ответ 1
Вы можете заставить свой контроллер наблюдать уведомление 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
}
Ответ 2
Для Swift 4.2:
NotificationCenter.default.addObserver(self,
selector: #selector(appWillEnterForeground),
name: UIApplication.willEnterForegroundNotification,
object: nil)
@objc func appWillEnterForeground() {
// run when app enters foreground
}
Ответ 3
Вы также можете просто переопределить - (void)applicationDidBecomeActive:(UIApplication *)application
в делегате приложения, чтобы оно делало то, что вы хотите, когда оно возвращается из фона. Если вы хотите, чтобы конкретное представление получало сообщение, а не делегат приложения, вам необходимо зарегистрироваться для получения уведомления, как описано выше Эльфредом.