从视图控制器调用poptoviewcontroller函数

让我解释清楚。

我在viewcontroller中有一个tabbarcontoller,它是单视图应用程序项目的主视图控制器。

我添加了一个tabbarcontroller作为子视图的viewcontroller。 在tabbarcontroller中,我添加了两个导航控制器,如下图,

在这里输入图像说明

我已经添加了三个(名为第一,第二,第三)更多的视图控制器作为新的文件。

如果我使用下面的方式从一个视图控制器导航到其他视图控制器,

third = [[Third alloc] initWithNibName:@"Third" bundle:[NSBundle mainBundle]]; [self.navigationController pushViewController:third animated:YES]; 

如果我切换到下一个选项卡并回到上一个选项卡,它应该popup到以前的视图控制器,如何做到这一点?

我试过了

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES]; } 

不成功,

我也试过了,

 [third popto]; 

在第三个视图控制器中,

 -(void)popto { [self.navigationController popViewControllerAnimated:YES]; } 

什么都没发生。

现在,我必须再次单击该选项卡poptoviewcontroller到第一个视图控制器。

任何想法将不胜感激。

尝试下面的代码片段

 -(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { UINavigationController *navController = (UINavigationController*)viewController; if (navController && ([[navController viewControllers] count] > 0)) { [navController popToRootViewControllerAnimated:NO]; } return YES; } 

希望它可以为你工作。

你应该尝试使用

 [viewController.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES]; 

代替

 [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES]; 

如何覆盖自定义的UITabbarController并实现以下方法:

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController; 

下一个循环遍历Tabbar(在本例中为导航控制器)的所有“viewcontrollers”,并调用所有导航控制器popToRootViewController。

这可能工作。