0

メッセージングアプリケーション。 > NavigationController-> View_One - - > View_TwoAppDelegateの特定の画面にリダイレクトする:タップ通知

構造

TabBarControllerです。通知時にユーザータブが表示されたら、私はappdelegate.mからView_2にリダイレクトする必要があります[DidReceiveRemoteNotification method]

この現在のコードは、View_Oneに着陸するのに役立ちます。 NavigationControllerとTabbarコントローラの機能に影響を与えずに、View_Twoに移動するにはどうすればよいですか?

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 
if(application.applicationState == UIApplicationStateInactive||application.applicationState == UIApplicationStateBackground){ 

    UIStoryboard *mainSB = [UIStoryboard storyboardWithName:MAIN_STORYBOARD bundle:nil]; 
    UITabBarController *tabBarController = [mainSB instantiateViewControllerWithIdentifier:TAB_BAR_ID]; 
    tabBarController.selectedIndex = 0; 
    [[UIApplication sharedApplication].keyWindow setRootViewController:tabBarController]; 
    [self.window makeKeyAndVisible]; 
} 

ありがとうございます。

enter image description here

+0

そのは私の質問を編集したあなたの '2'のインデックス –

+0

件まで開いて取り出す、一度ご確認ください。 – Ramdy

答えて

1

ここで我々はあなたのあたりとして、ここでは、いくつかのハック方法のために行く、この

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 
if(application.applicationState == UIApplicationStateInactive||application.applicationState == UIApplicationStateBackground){ 

    UIStoryboard *mainSB = [UIStoryboard storyboardWithName:MAIN_STORYBOARD bundle:nil]; 
    UITabBarController *tabBarController = [mainSB instantiateViewControllerWithIdentifier:TAB_BAR_ID]; 
    tabBarController.selectedIndex = 0; 
    UINavigationController *nav = [tabBarController.viewControllers objectAtIndex:0]; 
    View2 *destViewController = (View2*) [self.nav.viewControllers objectAtIndex:0]; 
    [nav pushViewController:destViewController animated:YES]; 


} 

選択肢-2

私は上記の方法を確認していないが、動作しますしてみてくださいコードを使用した後にコードNSUSerdefaultコンセプト

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 
if(application.applicationState == UIApplicationStateInactive||application.applicationState == UIApplicationStateBackground){ 

    UIStoryboard *mainSB = [UIStoryboard storyboardWithName:MAIN_STORYBOARD bundle:nil]; 
    UITabBarController *tabBarController = [mainSB instantiateViewControllerWithIdentifier:TAB_BAR_ID]; 
    tabBarController.selectedIndex = 0; 
    [[NSUserDefaults standardUserDefaults]setObject:@"APNS" forKey:@"openVC"] 
    [[UIApplication sharedApplication].keyWindow setRootViewController:tabBarController]; 
    [self.window makeKeyAndVisible]; 
} 

があなたのsecondVCにようやく

- (void)viewDidLoad // or call in loadView Method 
{ 
if ([[[NSUserDefaults standardUserDefaults]objectForKey:@"openVC"]isEqualToString:@"APNS"]) 
{ 
// Navigate to second VC 
} 
} 

同様

-(void)viewWillDisappear:(BOOL)animated 
{ 
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"openVC"]; 
[super viewWillDisappear:animated]; 
} 
+0

Tq。ここでは、RootViewControllerについて言及しませんでした。大丈夫ですか? – Ramdy

+0

@Ramdy - 必要はありません。一度お試しください。答えが得られない場合は、他のトリッキーな方法をお試しください。 –

+0

@Ramdy - 更新された答え –

関連する問題