2010-02-16 3 views
1

저는 'root'viewController가 UINavigationController 여야한다는 것을 깨달았습니다. 이제 이것을 대신 UINavigationController로 변경하고 내 최고의 옵션이 무엇인지 궁금해하고 싶습니다. IB를 사용하여이 뷰와 다른 모든 뷰를 만들면 다른 뷰가 만들어집니다.내 UIViewController를 UINavigationController로 변경하는 가장 좋은 방법은 무엇입니까

대부분의 경우 복사/붙여 넣기 및 레코딩을 많이해야하거나 모든 작업을 수동으로 편집하고 UINavigationController에 대한 확장명을 변경하는 것만 큼 쉽습니다.

감사

답변

6

기존보기 컨트롤러를 탐색 컨트롤러로 변환하지 마십시오.

UINavigationController가 UIViewController의 하위 클래스 임에도 불구하고 작업은 다른 뷰 컨트롤러를 관리하는 것이지 뷰 자체를 관리하는 것이 아닙니다. 당신은 다른 사람을 위해 그들을 교환하지 않습니다. 대신 UIViewController를 nav가 제어하도록 설정합니다.

IB에서 프로젝트에 nav를 추가하려면 xib를 열고 UINavigationController 위로 드래그하십시오. 그런 다음 탐색 컨트롤러의 rootControlller 속성을 기존 UIViewController로 설정합니다.

이제 끝났습니다. IB에서보기 컨트롤러를 선택하여

당신은 또한 "삽입"탐색 컨트롤러
+0

쉽지 않습니다! :) 당신이 IB를 통해 설정 한 무언가는 rootController입니까? – willcodejavaforfood

+0

아니,이 모든 것을 함께 연결하는 방법을 모르겠다. – willcodejavaforfood

+0

어떻게 연결했는지, rootController 속성이 없습니까? – marko

1

당신은 인스턴스화 할 수 사소한 UINavigationController을하지 않은 서브 클래스과 줄 원래 UIViewController으로 같은 루트 컨트롤러 : 어떻게 당신이가는에 따라

YourRootViewController *rootViewController = [[YourRootViewController] initHoweverYouInitIt]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; 

과 어쩌면 [rootViewController release];, 메모리를 관리하십시오.

+0

자신을 초기화하기 네비게이션 컨트롤러, 즉 모든 IB에 의해 처리되고 XIB 맞지? 내 AppDelegate에서이 모든 작업을 수동으로 수행해야합니까? – willcodejavaforfood

+0

맞습니다. 그러나 이것이 그 길입니다. – MrMage

1

UINavigationController는 UIViewController와 'is-a'관계가 있으므로 추가 변경없이 Interface Builder에서 해당 클래스 유형을 변경할 수 있어야합니다.

+0

나는 현재 UINavigationController를 가지고 있지 않으므로 이것을 설정하는 방법에 대해 더 자세히 설명 할 수 있습니까? – willcodejavaforfood

+0

Interface Builder에서 View Controller를 선택하고 Command-4를 눌러 정보 탭으로 이동하십시오. 상단 설정은 클래스 (현재 UIViewController)이며, 현재 존재하는 것 대신 UINavigationController에 입력 해보십시오. 이 뷰를 성공적으로 수행 했으므로 뷰 컨트롤러에서도 잘 작동해야합니다. – Winder

+0

아니요 작동하지 않습니다. ViewController는보기, 파일 소유자 및 첫 번째 응답자가 없습니다 – willcodejavaforfood

3

후 선택 편집기 -> 삽입 인 -> 난 정말 어떤 일을하고 있지 않다

관련 문제