2011-03-07 2 views
0

UISegmentedControl의보기간에 전환을 처리하기 위해 프로그래밍 방식으로 만든 탐색 컨트롤러가 있습니다. (segmentsNavigationController라고도 함)아래쪽 도구 모음이있는 UINavigation 컨트롤러가보기 스위치에서 UIBarButtonItems을 잃습니다.

탐색 컨트롤러에는 프로그래밍 방식으로 추가 된 몇 개의 UIBarButtonItem이있는 하단 도구 모음이 있습니다. 그래서 결국 내가 탐색 컨트롤러의 맨 아래 줄에 내 모든 UIBarButtons 다른 다시 하나 개의보기에서 전환 할 때

- (void)indexDidChangeForSegmentedControl:(UISegmentedControl *) aSegmentedControl { 
NSUInteger index = aSegmentedControl.selectedSegmentIndex; 

if(index == 0) { 
    OneViewController *oneViewController = nil; 

    if((oneViewController = [self.viewControllers objectForKey:@"one"]) == nil) { 
     oneViewController = [[OneViewController alloc] init]; 
     [self.viewControllers setObject:oneViewController forKey:@"one"]; 
     [oneViewController release]; 
    } 
    NSArray *theViewControllers = [NSArray arrayWithObject:oneViewController]; 
    [self.segmentsNavigationController setViewControllers:theViewControllers animated:YES]; 
} 
else if(index == 1) { 
    TwoViewController *twoViewController = nil; 

    if((twoViewController = [self.viewControllers objectForKey:@"two"]) == nil) { 
     twoViewController = [[RelatedArticlesViewController alloc] init]; 
     [self.viewControllers setObject:twoViewController forKey:@"two"]; 
     twoViewController.hidesBottomBarWhenPushed = YES; 

     [twoViewController release]; 
    } 

    NSArray *theViewControllers = [NSArray arrayWithObject:twoViewController];  
    [self.segmentsNavigationController setViewControllers:theViewControllers animated:YES];  
} 

}

: 나는 다음 코드 조각이 스위치를 처리하기 위해 잃어버린. 왜 그런가요? 내가 뭔가 잘못하고 있는거야?

답변

1

어떤 검색을 한 후에 잘못된 방법으로 UINavigationController를 사용하고 있다는 것을 알게되었습니다.

탐색 컨트롤러의 도구 모음은 부모가 아닌 탐색보기의 일부입니다. (이것을 이해하는 데는 시간이 걸렸습니다!) 동일한 컨트롤러에 버튼을 만들었습니다. 세그먼트를 만들었습니다 .NavigationController와 oneViewController 안에 있어야합니다.

OneViewController에 코드를 이동하고 도구 모음을 설정 :

[self setToolbarItems: [[NSArray alloc] initWithObjects: button1, button2, nil] animated: NO]; 

트릭을했다!

관련 문제