2010-06-25 5 views
0

나는이 며칠 동안 붙어 있었고 나를 죽이고있다 ... 내 viewDidLoad 이벤트에서 프로그래밍 방식으로 전체보기 UINavigationController 내보기 컨트롤러의 하위보기를 추가하려고합니다. . 지금까지, 난 단지 ...이 일을 성공했다Iphone UIViewController to UINavigation 컨트롤러 프로그래밍 방식으로

1) 만 회색 화면이 나는 것 대신에, 뷰 컨트롤러에 추가 탐색 컨트롤러를 닮은 무언가를 얻을
또는
2)을 나타 내 탐색 컨트롤러는 XIB에서 그것은 단지 일반적인 것입니다 ... 비록 내가 XIB에서로드. 이상하게도 항상 25 픽셀 아래로 이동하고 약간 잘라냅니다.

나는 Google에서 모든 단일 링크를 읽었으며이를 파악할 수 없습니다. 방금 새로운 viewcontroller를 만들었습니다 ... 그것에 UINavigationController를 추가했습니다 ... 뷰 컨트롤러를로드하려고하면 엉망이됩니다.

도움이 되었습니까?

답변

1

UINavigationController를 다른보기 컨트롤러의 자식으로 사용하는 대신 UINavigationController를 루트 컨트롤러 자체로 설정하십시오. 네비게이션 컨트롤러는 특별한 "컨테이너"뷰 컨트롤러 중 하나이며 일반적으로 전체 화면을 소유하고 특정 상황을 제외하고는 컨트롤러 계층 구조의 루트에 있어야합니다. 순자산 컨트롤러와 기존 전망을 모호합니다

UINavigationController * rootNavController = [[UINavigationController alloc] initWithRootViewController:myRootControllerInTheNavController]; 
[window addSubview:[rootNavController view]]; 

가 (그 기존의 상황이 여전히있을 것이다 때 -removeFromSuperview 순자산 가치 (NAV) 컨트롤러의 뷰) :

는 다음과 같이하십시오. 핵 옵션은 UIWindow의 rootViewController 속성을 nav 컨트롤러로 설정하는 것입니다.하지만 여기에서는 사용자가 원하는 것을 원하지 않는다는 의견이 들립니다.

아마도 더 깨끗한 접근법 : 원하는 것을 달성했다면 Nav 컨트롤러를 사용하여 현재보기 컨트롤러가 무엇이든간에 모달로 표시 할 수 있다고 생각합니다 (uiviewcontroller 용 문서보기). 전환을 적절하게 설정하면 탐색 스택에있는 동안 탐색 컨트롤러가 표시됩니다.

+0

내 전체 응용 프로그램은이 컨트롤러에 의존하지 않고 몇 페이지 만 있습니다. 당신은 그것을 어떻게 뿌리 내리게 될까요? 나는 스크린을 소유하고있는 컨트롤러에서 컨트롤을 넘겨 줄 필요가 있을까? –

+0

(업데이트 참조 ...) –

+0

대단한 답변을 보내 주셔서 감사합니다 !!! 모의 표현은 모범적으로 내가하고 싶은 것과 비슷하지만 회색 화면을주는 것입니다 ... LiteViewController * lite = [[LiteViewController alloc] initWithNibName : @ "LiteViewController"번들 : nil]; [self presentModalViewController : 라이트 애니메이션 : 예]; LiteViewController는 내 UINavigationController가있는 컨트롤러입니다 ... 창이나 뷰가 첨부되어 있지 않습니다. 하위 뷰만 연결되어 있으며 메인 뷰가 아닌 ... 어쩌면 그것이 회색으로 표시됩니다. –

관련 문제