0

タブバーコントローラーを備えた3つのタブアイテムを持つIphoneアプリケーションがあります。タブバーコントローラー内では、各ビューコントローラーはナビゲーションコントローラーです。2番目のタブを選択すると、ビューコントローラーがあります。 self.navigation controller.and そのviewcontrollerで私はプッシュして、そのように行きます.しかし、問題は、私がtabitemを再度選択しているときに、pushviewcotrollerがそこに表示されることです.しかし、タブを選択しているときに、そこに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 への pop と、View Controller の配列の取得の両方を試しましたが、うまくいきませんでした。

4

2 に答える 2

2

デリゲートで受け取った引数は、それ自体がナビゲーション コントローラーです。したがって、以下のようにステートメントを変更します。

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

    }
于 2012-07-13T08:50:24.330 に答える
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;
    }

}

これがお役に立てば幸いです。

于 2012-07-13T08:57:13.580 に答える