从视图控制器调用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。
这可能工作。