0

Мне нужно открыть существующий viewcontroller из AppDelegate при получении push-уведомления. В настоящее время я открываю новый каждый раз, поэтому проблема заключается в том, что он называется viewDidLoad каждый раз, и вся переменная повторно инициализируется снова и снова.Как открыть существующий viewcontroller в ios

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 

[[NSUserDefaults standardUserDefaults] setObject:@"Yes" forKey:@"Got Message"]; 
      [[NSUserDefaults standardUserDefaults] setObject:userInfo forKey:@"message"]; 
      [[NSUserDefaults standardUserDefaults]synchronize];    

      HomeViewController* room = [[HomeViewController alloc] init]; 
      [self.window.rootViewController presentViewController:room 
                 animated:NO 
                 completion:nil]; 



} 
+0

Каков ваш корень, это навигационный контроллер? – iphonic

+0

нет, нет навигационный контроллер в целом приложение. – DJtiwari

+0

нет, если он открыт, тогда ОК, иначе устройство будет вибрировать. – DJtiwari

ответ

0

Попробуйте сделать так:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
    { 

    [[NSUserDefaults standardUserDefaults] setObject:@"Yes" forKey:@"Got Message"]; 
       [[NSUserDefaults standardUserDefaults] setObject:userInfo forKey:@"message"]; 
       [[NSUserDefaults standardUserDefaults]synchronize];    

       [self.window.rootViewController presentViewController:self.room 
                  animated:NO 
                  completion:nil]; 



    } 

    - (UIViewController *)room { 
    if (_room == NULL) { 
    _room = [[HomeViewController alloc] init]; 
    } 
    return _room; 
    } 

Затем вы можете использовать ваш контроллер представления (Тем не менее, это будет разоблачение контроллер вид в вашем AppDelegate, который может быть вкус в чистом коде).

0

Поскольку вы хотите использовать существующий контроллер вида, почему вы используете код HomeViewController* room = [[HomeViewController alloc] init];?

Следуйте своей цели, мое предложение использовать свойство, чтобы сохранить существующий контроллер вида, так же, как:

@property (strong, nonatomic) UIViewController *existingViewController; 

и вы

[self.window.rootViewController presentViewController:existingViewController 
                animated:NO 
                completion:nil]; 
0

Вы можете получить UINavigationController в AppDelegate meethod

UIViewController *yourViewController = //your view controller to show after push 
UINavigationController *navController = self.window.rootViewController; 
[navController popToViewController:yourViewController animated:YES] 
+0

У меня нет контроллера навигации вообще. – DJtiwari

+0

кто-нибудь, где в вашем проекте Вы использовали линию ниже? – Jamil

+0

[self.navigationController pushViewController: compDetail animated: YES]; – Jamil