【发布时间】:2012-01-03 17:39:59
【问题描述】:
我有一个基于标签栏的应用程序。当应用程序处于活动状态时,我希望它转到第二个标签栏(SecondViewController),然后打开 DetailViewController。
这是我的做法:
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(或切换选项卡)调用它有关。
那么,当我从 App Delegate 调用视图时,为什么视图没有被推送?任何帮助是极大的赞赏。
【问题讨论】:
-
使用以下代码检查您是否正在获取导航控制器的值 - UINavigationController navController = [(MyAppDelegate)[[UIApplication sharedApplication] delegate] navigationController];还要确保您有一些 IBOutlet,然后它们连接正确。
-
[self navigationController]很可能是nil,因为 secondViewController 没有分配给任何 navigationController(至少从您向我们展示的代码来看。
标签: iphone ios uitabbarcontroller uiapplicationdelegate pushviewcontroller