2012-07-13 2 views
0

나는 아이폰 응용 프로그램이있는 tabbarcontroller.Inside tabbarcontroller 함께 각 viewcontroller 네비게이션 controller.when 두 번째 탭을 내가보기 controller.when 다른 버튼을 선택하고 다른보기 컨트롤러 self.navigation controller.and viewcontroller 나는 pushing하고 그렇게 가고있다. 그러나 문제는 내가 pushedviewcotrooller가 거기에 보여지는 tabitem을 다시 선택할 때이다. 그러나 내가 그 탭을 선택할 때 다시 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"]]; 

    } 
} 

이`내가보기 컨트롤러의 배열을 복용하여도 뿌리 저런 애과 함께 모두 시도`, 일, 그러나 누군가가 나에게 이것을 달성하는 데 도움이 worked.Can하지?

답변

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

} 

희망이 도움이 될 것입니다.

2

델리게이트에서받은 인수는 그 자체가 navigationController입니다. 그래서, 변경 명령문

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

    } 
+0

+1 답변 – hacker

관련 문제