1

让我解释清楚。

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

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

在此处输入图像描述

我添加了三个(名为 First、Second、Third)的视图控制器作为新文件。

如果我使用下面的选项卡从一个视图控制器导航到另一个视图控制器,

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];
}

没啥事儿。

现在,我必须再次单击选项卡以将视图控制器弹出到第一个视图控制器。

任何想法都将受到高度赞赏。

4

3 回答 3

2

你应该尝试使用

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

代替

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
于 2013-09-10T13:38:45.063 回答
1

试试下面的代码片段

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
 UINavigationController *navController = (UINavigationController*)viewController;

if (navController && ([[navController viewControllers] count] > 0))
{
    [navController popToRootViewControllerAnimated:NO];
}
return YES;
}

希望它对你有用。

于 2013-09-10T14:08:58.000 回答
0

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

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

下一个循环遍历选项卡栏的所有“视图控制器”(在本例中为导航控制器)并调用所有导航控制器 popToRootViewController。

这可能会奏效。

于 2013-09-10T13:59:38.337 回答