3

검색 디스플레이 컨트롤러에서 처리하는 검색 막대를 입력하면보기가 슬라이드되고 탐색 막대가 위로 올려집니다. 이것은 쉽게 수행 할 수 있습니다. 그러나 검색 결과를 클릭하고 새로운보기가 탐색 컨트롤러의 스택에 푸시 될 때 탐색 막대가보기에서 오른쪽에서 슬라이드됩니다!검색 디스플레이 컨트롤러가 탐색 막대를 숨기는 방법은 무엇입니까?

어떻게 처리하나요? 네비게이션 바를 단순히 숨기거나 표시하도록 설정하면 즉시 발생합니다. 스택에있는 하나의보기 컨트롤러에 대해서 어떻게 숨겨진 것 같아요?

많은 감사,

마이클

답변

8

당신은 탐색 모음의 전환을 애니메이션 할 수 있습니다. 자세한 내용은 -setNavigationBarHidden:animated:을 참조하십시오.

- (void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.navigationController setNavigationBarHidden:YES animated:YES]; 
} 

- (void) viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    [self.navigationController setNavigationBarHidden:NO animated:YES]; 
} 

위의 탐색 모음을 숨길이보기 컨트롤러 누를 때 당신이 시청 컨트롤러 기준으로이 작업을 수행해야하는 경우

, 바로 뷰 컨트롤러의 -viewDidAppear:-viewWillDisappear: 방법, 예를 오버라이드 (override) 네비게이션 스택 맨 위에 놓고 뷰 컨트롤러가 튀어 나올 때 네비게이션 바를 보여줍니다.

언제든지 -setNavigationBarHidden:animated:으로 전화 할 수 있지만이 두 가지 방법은 많은 UI 변경을 적용하는 데 유용합니다.

+0

네, 그렇지만 네비게이션 바가 그때부터 숨겨져있을 것이고 다른 뷰 컨트롤러를 밀면 여전히 숨겨져있을 것입니다. 새 컨트롤러를 누를 때 탐색 막대를 표시하더라도 이전 컨트롤러에 탐색이 표시됩니다. 탐색 막대는 탐색 컨트롤러의 스택에있는 모든 컨트롤러에 대해 동일한 막대이기 때문입니다. 따라서 검색 디스플레이 컨트롤러가하는 일을 어떻게하는지 혼란스러워합니다! –

+0

편집 된 답변보기 뷰 컨트롤러가 밀리거나 내릴 때 탐색 막대에 애니메이션을 적용 할 수 있습니다. –

+0

안돼 안돼! 천재! viewWillAppear/Disappear에서 탐색/표시 코드를 삽입하면 탐색 막대가 표시되는 방법에 차이가 생길 수 있습니다. 정말 고마워, 나는 이것에 대해 꽤 많은 시간 동안 곤란을 겪었다. –

0
-(void)viewDidLayoutSubviews{ 
    [self.navigationController setNavigationBarHidden:NO animated:NO]; 
} 

탐색 모음을 숨기지 않습니다.

관련 문제