私はタブバーベースのアプリケーションを持っています。アプリケーションがアクティブになったら、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から呼び出すとビューがプッシュされないのですか?どんな助けでも大歓迎です。
チェックあなたは、次のコードを使用して、ナビゲーションコントローラの値を取得している場合 - UINavigationController *からNavController = [(MyAppDelegate *)[[のUIApplication sharedApplication]デリゲート] navigationController]。 IBOutletを持っているかどうかを確認してください。 – rishi
'[self navigationController]'は、secondViewControllerがnavControllerに割り当てられていないので、おそらく 'nil'です(少なくともあなたが私たちに示しているコードから)。 – Till
offtopic:ARCを使用しましたか? – CarlJ