让我解释清楚。
我在viewcontroller中有一个tabbarcontoller,它是单视图应用程序项目的主视图控制器。
我将一个tabbarcontroller添加到viewcontroller作为子视图。在tabbarcontroller中,我添加了两个导航控制器,如下面的图像,
我已将三个(名为First,Second,Third)的viewcontrollers添加为新文件。
如果我使用下面的选项卡从一个viewcontroller导航到另一个,
third = [[Third alloc] initWithNibName:@"Third" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:third animated:YES];
如果我切换到下一个标签并返回上一个标签,它应该弹出到上一个视图控制器,该怎么做?
我试过
- (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转到第一个viewcontroller。
任何想法都将受到高度赞赏。
答案 0 :(得分:2)
你应该尝试使用
[viewController.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
而不是
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
答案 1 :(得分:1)
尝试以下代码段
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
UINavigationController *navController = (UINavigationController*)viewController;
if (navController && ([[navController viewControllers] count] > 0))
{
[navController popToRootViewControllerAnimated:NO];
}
return YES;
}
希望它可能适合你。
答案 2 :(得分:0)
如何为自定义覆盖UITabbarController并实现以下方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
接下来循环通过tabbar的所有'viewcontrollers'(在本例中为导航控制器)并调用所有导航控制器popToRootViewController。
这可能有用。