3
我有一個基於標籤欄的應用程序。當應用程序變爲活動狀態時,我希望它進入第二個標籤欄(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不會被推?我知道代碼的工作原理是因爲我在IBAction中有相同的代碼,它會推送detailView。這個問題與從AppDelegate調用它(或切換標籤)有關。
那麼爲什麼當我從應用程序委託調用它時,視圖不會被推送呢?任何幫助是極大的讚賞。
檢查,如果你是使用下面的代碼獲取瀏覽器的價值 - UINavigationController的* navController = [(MyAppDelegate *)[[UIApplication的sharedApplication]委託] navigationController]。還要確保你是否有一些IBOutlet,然後這些連接正確。 – rishi 2012-01-03 17:49:54
'[self navigationController]'最有可能是'nil',因爲secondViewController沒有分配給任何的navigationController(至少從你給我們展示的代碼中)。 – Till 2012-01-03 17:51:51
offtopic:你使用ARC嗎? – CarlJ 2012-05-30 12:58:37