我有一个标签栏应用程序。其中一个选项卡有一个导航堆栈。我想以编程方式更改选项卡,然后将新控制器推送到选定的选项卡堆栈。我可以改变标签:
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];
但这并没有推动控制器。有人有什么想法吗?
答案 0 :(得分:1)
如果您在索引2处有导航控制器,那么当您执行[tab.viewControllers objectAtIndex:2];
时,您将获得导航控制器,因此它应该
[..]
UINavigationController * navigationController = [tab.viewControllers objectAtIndex:2];
[navigationController pushViewController:detailViewController animated:NO];