所以阿森的解決方案看起來不錯,但我不知道如何得到我的故事板的名稱哈哈。什麼工作對我來說是
UINavigationController *navigationController = (UINavigationController*)_window.rootViewController;
AVDashboardViewController *dashBoardViewController =
(AVDashboardViewController*)[navigationController.viewControllers objectAtIndex:1];//since on index 0 I have my login screen and index 1 is the home screen
獲取NavigationController的在AppDelegate中引用似乎是不好的編碼習慣,但對我來說,我需要它,因爲它是在
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
所在,這是接收通知時調用的方法之一。我也掙扎如何,一旦我得到的消息更新導航控制器,所以也許題外話,但這裏是一個免費的提示:
UIBarButtonItem *notiButton = [[UIBarButtonItem alloc] initWithTitle: @"Received push!" style: UIBarButtonItemStyleBordered target:self action:nil];
[[dashBoardViewController navigationItem] setLeftBarButtonItem:notiButton animated:YES];
[navigationController popToViewController:dashBoardViewController animated:YES];
希望它能幫助!
您是否爲您的UINavigationController設置了Storyboard ID?如果不是,你應該在Storyboard中做到這一點。之後,您不需要全部訪問您的導航控制器。你只需要[self.storyboard instantiateViewControllerWithIdentifier:@「myID」]。我假設你從你的視圖控制器調用。要想像你想要的那樣訪問導航控制器,只有當你的rootViewController在UINavigationController中時纔有可能。 – rocir
謝謝@rocir!那看起來很有希望我唯一的反對意見是應該已經有一個UINavigationController實例化了,我想獲得一個參考。我不認爲我想要實例化第二個導航控制器。 – bbrame
但是這樣做你不會做到這一點,因爲你的rootViewController不在UINavigationController中。此外,在這一點上,UIViewController尚未實例化。所以你有任何連接這兩個視圖控制器的segue? – rocir