2011-12-20 4 views
1

n 수의 컨트롤러가있는 내비게이션 컨트롤러를 사용하고 있습니다.위아래로 움직이는 것을 막으십시오 - iPhone

한 화면에서 다른 화면으로 이동하는 동안 상단 막대와 하단 막대도 컨트롤러를 밀면 지나치게 이동합니다.

그래서 질문 상단과 하단 막대의 전환을 막을 수있는 방법이 있습니까?

N.B. 상단 막대의 내용은 정적이지만 하단 막대의 내용은 해당 페이지의 요구 사항에 따라 계속 변경됩니다.

모든 도움이나 제안을 보내 주시면 감사하겠습니다.

답변

1

탭 표시 줄이 내비게이션 컨트롤러보기에 포함되지 않도록하십시오.

뷰가있는 UIViewController를 만듭니다.
UIViewController에서 UINavigationController 유형의 인스턴스 변수를 만듭니다.
UINavigationController에 대한 탐색 모음을 숨 깁니다. 바는 UINavigatioViewController와 자신의 차례에 상호 작용의 UIViewController에서 메서드를 호출에서이

UIViewController  UIViewControllers content view setup. 
------------------- ------------------- 
|UIView   | |UINavigationBar | 
|     | |-----------------| 
|     | |UINavigationVi | 
|     | |ewController  | 
|     | |content view  | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |-----------------| 
|     | |UIToolBar  | 
------------------- ------------------- 

같은

설정의 UIViewController 콘텐츠의 상호 작용을 보자.

이 정보가 도움이되고 명확 해 졌기를 바랍니다. ,

UINavigationControllerViewController 
------------------- 
|view containing | 
|bars and current | 
|controller  | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
------------------- 
+0

잘 작동합니다. 하지만 유일한 문제는 내 원래의 컨트롤러가 그 자리에 남아있을 것이고 내부 컨트롤러가 viewWillappear, didAppear, willDisappear와 같은 모든 뷰 대리자 메소드를 탐색 할 것이기 때문입니다. 이제 강제로 호출해야합니다. 또한 UIViewController 대신 UINavigation 컨트롤러를 사용하면 두 번째 이미지에서 ** innerViews의 ** Y 프레임 **을 0 대신 46에서 시작하도록 설정하지 않아도됩니다. –

+0

이 솔루션의 샘플 응용 프로그램을 만들었습니다. https://github.com/stil4m/NavControllerNoBars의 코드를 참조하십시오. 이 솔루션에서는 46 픽셀의 여백을 추가 할 필요가 없으며 대리자 메서드가 있습니다. 주 뷰 컨트롤러에서는 UINavigationController에서 대리자 호출을 처리 할 수 ​​있습니다. 저장소의 코드를 읽으십시오. 희망이 물건을 지워. –

+0

고마운 톤 매트 ..하지만 주된 것은 viewWillAppear, DidAppear, Disappear methods ...라는 메소드를 얻는 것이 었습니다. 우리가이 방법을 사용하면 자동으로 호출되는 것은 아닙니다 .. 제공된 샘플도 viewwillAppear 및 나머지 호출을하지 않습니다. 보기 대리자 메서드 : ( –

0

요구 사항은 위에서 언급을 감안할 때 난은 UINavigationController를 사용하지만, 내비게이션 바 숨겨진하고 내 자신의 헤더 바 그래픽 (UIView의)하고 필요한 버튼을 구현하는 것이 :

현재의 상황이 비슷합니다.

[self navigationController].navigationBar.hidden = YES; 
+0

하지만 맨 위의 막대가 애니메이션을 못하게하는 방법은 무엇입니까? 위쪽 및 아래쪽 막대 만 애니메이션을 적용하면 안됩니다. 전체보기를 애니메이션으로 유지해야합니다. –

관련 문제