更改选项卡并以编程方式将控制器推入导航堆栈

时间:2011-07-04 00:56:51

标签: ios uitabbarcontroller

我有一个标签栏应用程序。其中一个选项卡有一个导航堆栈。我想以编程方式更改选项卡,然后将新控制器推送到选定的选项卡堆栈。我可以改变标签:

   KidScienceAppDelegate *appDelegate = (KidScienceAppDelegate*) [[UIApplication sharedApplication] delegate];
    UITabBarController *tab=[appDelegate tabBarController] ;
    tab.selectedIndex=2;

如果我只是运行它,它会正确地移动到带有导航堆栈的选项卡并显示根视图。我想把一个新的控制器推到那个堆栈上。我试过这个:

ExperimentsNameViewController *detailViewController = [[ExperimentsNameViewController alloc] initWithNibName:@"ExperimentsNameView" bundle:nil];

FindViewController *c = [tab.viewControllers objectAtIndex:2];
[c.navigationController pushViewController:detailViewController animated:NO];

但这并没有推动控制器。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您在索引2处有导航控制器,那么当您执行[tab.viewControllers objectAtIndex:2];时,您将获得导航控制器,因此它应该

[..]
UINavigationController * navigationController = [tab.viewControllers objectAtIndex:2];
[navigationController pushViewController:detailViewController animated:NO];