Хорошо, я не уверен, что это правильный способ сделать это или нет, но это то, что я сделал, так как в моем приложении был tabbarcontroller, первое, что я сделал, - реализовал метод делегата tabbarcontroller "didSelectViewController"
// Делая это каждый раз, когда вы выбираете вкладку, она возвращается к rootViewController этой вкладки
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
if ([viewController isKindOfClass:[UINavigationController class]]){
[(UINavigationController *)viewController popToRootViewControllerAnimated:NO];
}
}
и затем на didReceiveRemoteNotification
if(tabBarController.selectedIndex == 1){
UINavigationController *navigationController = (UINavigationController*)tabBarController.selectedViewController;
[navigationController popToRootViewControllerAnimated:NO];
[[[navigationController viewControllers ] objectAtIndex:0]viewWillAppear:YES];
}else{
self.tabBarController.selectedIndex = 1;
}
поэтому позвольте мне объяснить, что это делает, он проверяет, равна ли текущая вкладка 1, если это так, тогда он удалит все представления из стека навигации, чтобы перевести представление в корневое представление, если текущая вкладка не 1 и просто сделайте это до 1.