我有一个Iphone应用程序,其中我有3个tabitems与tabbarcontroller.Inside tabbarcontroller每个viewcontroller是一个导航控制器。当选择第二个选项卡我有一个视图控制器。当选择一个按钮,我正在推另一个视图控制器到self.navigation控制器。在那个viewcontroller中,我正在推,然后去那样。但问题是当我再次选择tabitem时,pushviewcotrooller会显示在那里。但是当我选择选项卡时,我再次需要rootview ,我在我的代码中尝试过这样但没有用,“
-(void)tabBarController:(UITabBarController *)tabbBarController didSelectViewController:(UIViewController *)viewController
{
if(tabBarController.selectedIndex==0)
{
//[viewController.tabBarItem setImage:[UIImage imageNamed:@"pinboard_hvr.png"]];
}
else if (tabBarController.selectedIndex==1)
{
NSLog(@"%@",viewController);
//[viewController.tabBarItem setImage:[UIImage imageNamed:@"pinboard_hvr.png"]];
// NSArray *array = [viewController.navigationController viewControllers];
NSLog(@"%@",array);
// [self.navigationController popToViewController:[array objectAtIndex:0] animated:YES];
[viewController.navigationController popToRootViewControllerAnimated:YES];
//[appdelegate.navigationController popToRootViewControllerAnimated:YES];
}
else if (tabBarController.selectedIndex==2)
{
//[viewController.tabBarItem setImage:[UIImage imageNamed:@"pinboard_hvr.png"]];
}
}
`我已经尝试过弹出到root用户,同时也使用了一组视图控制器,但没有工作。可以帮助我实现这个目标吗?
答案 0 :(得分:2)
您在委托中收到的参数本身就是一个navigationController。 所以,改变声明如下,
else if (tabBarController.selectedIndex==1)
{
[((UINavigationController *)viewController) popToRootViewControllerAnimated:YES];
//[appdelegate.navigationController popToRootViewControllerAnimated:YES];
}
答案 1 :(得分:1)
我也有类似的问题,我通过以下代码解决了这个问题。
-(void)tabBarController:(UITabBarController *)tabbBarController didSelectViewController:(UIViewController *)viewController
{
else if (tabBarController.selectedIndex==1)
{
NSArray *mycontrollers = self.tabBarController.viewControllers;
[[mycontrollers objectAtIndex:1] popToRootViewControllerAnimated:NO];
mycontrollers = nil;
}
}
希望这会对你有所帮助。