Как я могу проверить, является ли мой текущий navigationController.view = a classes.view?Причина = push-уведомления.+ iphone - PullRequest
4 голосов
/ 03 сентября 2010

так что в основном в моем делегате приложения у меня есть navigation.controller

Этот контроллер навигации имеет представление класса с именем MainScreen.

В MainScreen.m у меня есть IBAction, который будетперенести меня на страницу SelectionScreen.m, нажав на нее.вот код для него

SelectionScreen *aSelectionScreenViewController = [[SelectionScreen alloc]initWithNibName:@"SelectionScreen" bundle:nil];
[self.navigationController pushViewController:aSelectionScreenViewController animated:YES];
[aSelectionScreenViewController release];

Так как я могу проверить, является ли мой текущий navigationController.view = this selectionscreen.view?

Причина проверки, какой это текущий вид, заключается в том, чтокогда я получаю push-уведомление, я хочу автоматически переключаться на эту страницу SelectionScreen.m и вызывать некоторые методы внутри нее.Но эту проверку можно выполнить только в appDelegate, потому что там находится метод didReceiveRemoteNotification.

Ответы [ 3 ]

8 голосов
/ 23 марта 2012

Вот как я это делаю

, например, если у вас есть три ViewController, и любой из них может быть выдвинут NavigationController:

ViewControllerA
ViewControllerB
ViewControllerC

Тогда что вам нужносделать это:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ([[self.navigationController topViewController] isKindOfClass:[ViewControllerA class]]) {

    //do sth
    }

    if ([[self.navigationController topViewController] isKindOfClass:[ViewControllerB class]]) {

    //do sth
    }

    if ([[self.navigationController topViewController] isKindOfClass:[ViewControllerC class]]) {

    //do sth
    }

}//end of code
1 голос
/ 04 сентября 2010

Один из способов - сохранить selectionScreenViewController как свойство делегата приложения, затем:

if (self.navigationController.topViewController == self.selectionScreenViewController) {
   //...
}
else {
   //...
}
0 голосов
/ 08 сентября 2010

Эй, ребята, я сделал это простым способом.В каждом контроллере представления, который у меня был, я удалял все объекты и назначал объект массиву в приложении appdelegate.Таким образом, каждый раз, когда я перехожу к новому представлению, значение отличается.

Так что в appdidrecieveremotenotification я могу проверить этот массив и решить, что делать соответственно.

Это простоспособ проверки.

...