0

'이상한' 뷰 계층이 : 나는 UINavigationControllerUINavigationBar을 표시하지 않도록 mastercontroller을 설정하면복잡한보기 계층 구조에서 UINavigationBar을 올바르게 배치하는 방법은 무엇입니까? 내가 일하고 있어요 아이 패드 응용 프로그램에서

enter image description here

을, UI를 잘 (만입니다 상태 표시 줄이 나타납니다). I는 UINavigationController (I는 바 표시되도록 할 이때)에 detailcontroller 푸시하려고하면

enter image description here

가 탐색 줄은 Y 축에 번역 나타나면 (는 (프레임이 기원임을 나타낸다 0 , 20)이고 20은 상태 표시 줄의 높이입니다. 오른쪽 ...?)

mastercontroller으로 돌아 가면 바가 여전히 번역되어 있습니다.

enter image description here

이에 대한 모든 단서는 어떻게이 문제를 해결할 수 있습니다 : 이것은 내가 무엇을 얻을?

답변

1

해결책을 찾았습니다. amattn은 계층 구조를 단순화해야한다고 말했지만, topview를 항상 보이게하고 회전시킬 수있는 제약이 있으므로 그렇게 쉽게 할 수 없습니다.

아이디어는 UINavigationController를 서브 클래스 화하고 뷰와 관리를이 서브 클래스에 넣는 것입니다. 이 방법으로이 새 컨트롤러의 인스턴스를 기본 창에 직접 적용 할 수 있으며 다른 컨트롤러를 해당 창에 푸시 할 수 있습니다.

2

문제의 근본 원인은 컨트롤러 계층과 뷰 계층을 혼합한다는 것입니다.

maincontontroller가 일반 뷰 컨트롤러라고 가정하면 uinavigationcontroller를 형제가 될 수 있도록 위로 이동합니다. 그런 식으로 해결할 필요가 없습니다.

UINavigationController에 parentViewController가 없으면 기본적으로이 컨트롤은 창에 있다고 가정합니다.

+0

topcontroller는 top__에 __always를 표시해야하는보기가 있기 때문에 계층 구조가 필요하며 장치 방향 변경을 통해 회전해야합니다. UINavigationController를 maincontroller의 직접적인 형제로 만들려면 어떻게해야합니까? – rano

관련 문제