Удалите Modal View Controller, когда приложение станет активным - PullRequest
1 голос
/ 20 августа 2011

В моем приложении у меня есть кнопка, когда пользователь нажимает на нее, она вызывает модальный контроллер вида, который получает местоположение пользователя (с UIActivityIndicator и включенным изображением). Когда он там найдется, он отправит их в другое приложение.

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

Однако на устройствах с многозадачностью, когда я возобновляю работу приложения, представление, которое сообщает пользователю, что он получает свое местоположение, все еще там - что совсем не желательно.

Моей первой идеей было установить BOOL, когда он собирался запустить их в другое приложение, а затем в viewDidAppear, если BOOL имеет значение true, отклонить модальное представление.

Это сработало бы, если бы viewDidAppear был вызван, когда приложение возобновило работу. Как я только что узнал, это не так.

Есть ли способ, на который контроллеры представления могут реагировать, когда приложение возобновляет работу с этим представлением? Или мне придется настроить делегирование и т. Д. С делегатом приложения? Если да, то можете ли вы объяснить, как я это сделаю?

1 Ответ

5 голосов
/ 20 августа 2011

Вы можете отправить уведомление, когда приложение станет активным, и прослушать его в своем modalviewcontroller.Я думаю, что это самый простой способ.

// Into the app delegate
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ApplicationDidBecomeActive" object:nil];
}

// Into your modal view controller register it for the given notification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:@"ApplicationDidBecomeActive" object:nil];

- (void)applicationDidBecomeActive:(NSNotification *)notification
{
//...
}

В противном случае вы можете отключить фоновый режим вашего приложения, установив для клавиши «UIApplicationExitsOnSuspend» значение YES в файле info.plist.

...