从viewcontroller调用poptoviewcontroller函数

时间:2013-09-10 13:25:32

标签: iphone ios objective-c uinavigationcontroller tabbarcontroller

让我解释清楚。

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

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

enter image description here

我已将三个(名为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。

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

3 个答案:

答案 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。

这可能有用。