3

私はタブバーベースのアプリケーションを持っています。アプリケーションがアクティブになったら、2番目のタブバー(SecondViewController)に移動してからDetailViewControllerを開きます。App Delegateから呼び出されたときにPushViewControllerが機能しない

は、ここで私はそれをやっている方法は次のとおりです。

AppDelegate.m

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1]; 

    SecondViewController *secondView = [[SecondViewController alloc] init]; 
    [secondView openDetailView]; 
    [secondView release]; 

}

SecondViewController.m

-(void)openDetailView{ 
    NSLog(@"open detail view"); 

    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
      [[self navigationController] pushViewController:detailViewController animated:YES]; 
} 

openDetailView()ありません(nslogが動作しているので)実行しますが、DetailViewはプッシュされません。私は、detailViewを押しているIBActionに同じコードがあるので、コードが動作することを知っています。この問題は、AppDelegate(またはタブを切り替える)から呼び出されることと関係しています。

なぜ、私はApp Delegateから呼び出すとビューがプッシュされないのですか?どんな助けでも大歓迎です。

+0

チェックあなたは、次のコードを使用して、ナビゲーションコントローラの値を取得している場合 - UINavigationController *からNavController = [(MyAppDelegate *)[[のUIApplication sharedApplication]デリゲート] navigationController]。 IBOutletを持っているかどうかを確認してください。 – rishi

+1

'[self navigationController]'は、secondViewControllerがnavControllerに割り当てられていないので、おそらく 'nil'です(少なくともあなたが私たちに示しているコードから)。 – Till

+0

offtopic:ARCを使用しましたか? – CarlJ

答えて

0

secondViewのナビゲーションスタックにdetailViewControllerをプッシュしますが、secondViewはどこにもありません。

これを試してみてください...

SecondViewController *secondView ... 

[self.tabBarController pushViewController:secondView animated:YES]; <== 

[secondView openDetailView]; 
関連する問題