Показывать модальные при получении push-уведомлений - PullRequest
1 голос
/ 23 августа 2010

Мне нужно показывать модальное уведомление при получении push-уведомления (во время работы приложения). У моего приложения есть панель вкладок, и я получил это для частичной работы, поместив модальное уведомление на контроллер панели вкладок.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {        
    NotificationViewController *vc = [[NotificationViewController alloc] init];
    [tabBarController presentModalViewController:vc animated:YES];
    [vc release];
}

Однако, похоже, это не работает, когда уже есть другое открытое модальное окно, скрывающее контроллер панели вкладок. Каков наилучший способ убедиться, что NotificationViewController всегда отображается при получении push-уведомления, даже если уже есть модальное открытие, скрывающее контроллер панели вкладок?

1 Ответ

3 голосов
/ 23 августа 2010

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

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {      
    UIViewController* currentController = tabBarController;
    if ( [currentController modalViewController] != nil )
          currentController = [currentController modalViewController];

    NotificationViewController *vc = [[NotificationViewController alloc] init];
    [currentController presentModalViewController:vc animated:YES];
    [vc release];
}

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

...