didReceiveRemoteNotification и модальные представления - PullRequest
0 голосов
/ 24 октября 2011

Мой делегат приложения имеет RootViewController * viewController;и приложение запускается с этим видом.

С этого момента я буду продолжать представлять модальные виды (до 3-х уровней), пока пользователь переходит к различным функциям в приложении.

У меня есть настройкиприложение для получения push-уведомлений, и у меня есть didReceiveRemoteNotification внутри делегата приложения для получения полезной нагрузки.

Теперь вопросы:

  1. Когда получено push-уведомление, как я могу узнатьв каком модальном представлении находится пользователь в данный момент?
  2. Как закрыть все модальные представления, чтобы вернуться к RootViewController?Могу ли я сделать это внутри делегата приложения?

1 Ответ

1 голос
/ 24 октября 2011

Нет универсального встроенного способа сделать это. Лучшее решение, вероятно, состоит в том, чтобы добавить свойство делегату приложения, в котором вы можете его сохранить.

@property (nonatomic, retain) UIViewController *currentModalViewController;

Когда вы представляете модальные контроллеры вида, сделайте это:

#import "MyAppDelegate.h"

// ....
MyAppDelegate *appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.currentModalViewController = vc;
[self presentModalViewController:vc animated:YES];

Вы также должны убедиться, что теряете ссылку при отклонении:

[self dismissModalViewControllerAimated:YES];
MyAppDelegate *appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.currentModalViewController = nil;

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

...