1

2 つのナビゲーション コントローラーと uilocalNotification を使用するアプリケーションを開発しています。

最初の NavigationViewController N1 には 2 つの ViewController v1 と v2 があります 2 番目の NavigationViewController N2 には 2 つの ViewController v3 と v4 があります

また、アプリケーションがバックグラウンドにあり、UILocalNotification が表示され、それをクリックすると、アプリケーションはどのナビゲーション コントローラーとどのビュー コントローラーが表示されているかを検出し、別のナビゲーション コントローラーのビュー コントローラーに切り替える必要があります。

例: - N1 の v2 が表示されている場合、通知をクリックした後、N2 の v3 に切り替えて表示されます

これを行う方法 ??

4

1 に答える 1

1

この次のメソッドをファイルに貼り付けてAppDelegate.m、変更したいときに特定のメソッドを呼び出すだけですUINavigationController...

例:あなたがの中v2にいN1て、通知が変更された場合、次のような次のメソッドを呼び出します...

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate setRootViewControllerN2];

アニメーション付きのナビゲーションコントローラーを切り替えるには、この次のメソッドを使用します。

1. setRootViewControllerN1 : これは、N1 navigationController を使用して RootViewController を設定するためのものです。

-(void)setRootViewControllerN1{
    self.window.rootViewController = N1;
    
    [self.window makeKeyAndVisible];
    CATransition *animation = [CATransition animation];
    [animation setDelegate:self];   
    [animation setType:kCATransitionFade];
    [animation setDuration:0.5];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                                  kCAMediaTimingFunctionEaseInEaseOut]];
    [[self.window layer] addAnimation:animation forKey:kAnimationKey];
}

2. setRootViewControllerN2 : これは、N2 navigationController を使用して RootViewController を設定するためのものです。

-(void)setRootViewControllerN2{
    self.window.rootViewController = N2;
    
    [self.window makeKeyAndVisible];
    CATransition *animation = [CATransition animation];
    [animation setDelegate:self];   
    [animation setType:kCATransitionFade];
    [animation setDuration:0.5];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                                  kCAMediaTimingFunctionEaseInEaseOut]];
    [[self.window layer] addAnimation:animation forKey:kAnimationKey];
}
于 2013-03-22T08:43:05.580 に答える