2012-08-30 2 views
0

UITabBarController가 있습니다. 첫 번째 탭이 아닌 다른 탭을 선택하면 탭 바가 숨겨지기를 원합니다 (hidesBottomBarWhenPushed에 의해 수행됨) 및 탐색 바에 뒤로 버튼 (일반 탭이 아니라 기본 화살표가 있음) (첫 번째 탭으로 이동)이 있어야합니다. 이것을 어떻게 성취합니까?iOS - 탭 선택시 뒤로 버튼

답변

0

아래 질문에 대한 답변을 드리겠습니다 만, 이것은 비표준 사용자 인터페이스로서 은유가 섞여 있다고 말할 수밖에 없습니다. 다른 뷰 컨트롤러로 실제로 푸시하려는 경우 이 아니고은 탭 표시 줄을 사용해야합니다. 보조 뷰 컨트롤러로 이동하기위한 간단한 단추가 있어야합니다. 애플이 당신이 그것을 생각하는 것처럼 탭 바를 사용하는 앱을 거부한다면 나는 놀랄 일이 아니다.

어쨌든 질문에 대답하기 위해 보조보기에 "뒤로"단추를 추가하려고하지 않고 탐색 컨트롤러를 올바르게 구현하기를 원합니다. 그런 다음 보조보기로 이동하면 뒤로 버튼이 자동으로 표시됩니다. 또한 탭 막대를 숨기는 것과 관련된 어리 석음에 대해 걱정할 필요가 없습니다. 다른보기로 밀면 푸시됩니다.

따라서 "1", "2"및 "3"버튼이있는 탭 막대가있는이 예제를 고려하십시오. 그러나 적절한 탭 표시 줄 컨트롤러 구성이 아니라 "One"이 탐색 컨트롤러에 있고 간단한 탭 표시 줄 사용자 인터페이스 컨트롤이 있고 두 번째 또는 세 번째 탭을 탭하면 세 번째 탭을 클릭하면 각보기로 이동합니다. 따라서, 논리적으로, 그것은 (당신이 스토리 보드를 사용하지 않는 경우에도,이 잠재적 인 구성을 시각화 도움이 될 수 있습니다) 다음과 같이 보일 수 있습니다

Sample storyboard

따라서, 기본보기 컨트롤러 ("하나") , 당신은 IBOutlet와 탭 표시 줄을 추가 할 것 :

@property (weak, nonatomic) IBOutlet UITabBar *tabBar; 

그때 구성하는 것 그 탭 표시 줄을 viewDidLoad에, 예를 들면 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.tabBar.delegate = self; 
    self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:0]; 
} 

분명히 뷰 컨트롤러 자체는 UITabBarDelegate이어야하며 푸시 세그를 수행하거나 navigationControllerpushViewController으로 사용하는 didSelectItem이 필요합니다. 그리고, 분명히, 당신은 당신이 당신의 탭 표시 줄 단추를 넣어 실제 레이블 @"Two"@"Three"에 대한 참조를 변경하기를 원할 것입니다, 그러나 희망이 당신에게 아이디어를 제공합니다

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    if ([item.title isEqualToString:@"Two"]) 
    { 
     // put code for pushing to second view controller here 
    } 
    if ([item.title isEqualToString:@"Three"]) 
    { 
     // put code for pushing to third view controller here 
    } 
} 

가 나는 또한 기본보기를 원하는 것을 컨트롤러가 다시 팝업 후에는 다시 할 때 첫 번째 항목으로 다시 선택한 항목을 설정해야 할 : 더 이상이기 때문에

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:0]; 
} 

을 어쨌든, 당신은 이런 식으로 할 경우, (탭 표시 줄의 숨을 없다 컨트롤러가 아니라 첫 번째 탭의 사용자 인터페이스 요소). 이것은 아마도 원하는 사용자 인터페이스를 구현하는 가장 쉬운 방법 일 것입니다.