如何在每次选中选项卡时加载我的rootview?

时间:2012-07-13 08:42:52

标签: iphone ios ipad

我有一个Iphone应用程序,其中我有3个tabitems与tabbarcontroller.Inside tabbarcontroller每个viewcontroller是一个导航控制器。当选择第二个选项卡我有一个视图控制器。当选择一个按钮,我正在推另一个视图控制器到self.navigation控制器。在那个viewcontroller中,我正在推,然后去那样。但问题是当我再次选择tabitem时,pushviewcotrooller会显示在那里。但是当我选择选项卡时,我再次需要rootview ,我在我的代码中尝试过这样但没有用,“

-(void)tabBarController:(UITabBarController *)tabbBarController didSelectViewController:(UIViewController *)viewController
{
    if(tabBarController.selectedIndex==0)
    {
        //[viewController.tabBarItem setImage:[UIImage imageNamed:@"pinboard_hvr.png"]];
    }
    else if (tabBarController.selectedIndex==1)
    {
        NSLog(@"%@",viewController);
       //[viewController.tabBarItem setImage:[UIImage imageNamed:@"pinboard_hvr.png"]];
       // NSArray *array = [viewController.navigationController viewControllers];
        NSLog(@"%@",array);

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


        [viewController.navigationController popToRootViewControllerAnimated:YES];
        //[appdelegate.navigationController popToRootViewControllerAnimated:YES];

    }
    else if (tabBarController.selectedIndex==2)
    {

        //[viewController.tabBarItem setImage:[UIImage imageNamed:@"pinboard_hvr.png"]];  

    }
}

`我已经尝试过弹出到root用户,同时也使用了一组视图控制器,但没有工作。可以帮助我实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

您在委托中收到的参数本身就是一个navigationController。 所以,改变声明如下,

else if (tabBarController.selectedIndex==1)
    {
        [((UINavigationController *)viewController) popToRootViewControllerAnimated:YES];
        //[appdelegate.navigationController popToRootViewControllerAnimated:YES];

    }

答案 1 :(得分:1)

我也有类似的问题,我通过以下代码解决了这个问题。

-(void)tabBarController:(UITabBarController *)tabbBarController didSelectViewController:(UIViewController *)viewController
{
    else if (tabBarController.selectedIndex==1)
    {
         NSArray *mycontrollers = self.tabBarController.viewControllers;
         [[mycontrollers objectAtIndex:1] popToRootViewControllerAnimated:NO];
         mycontrollers = nil;
    }

}

希望这会对你有所帮助。