2011-03-09 1 views
0

다음 단계가 발생하는 매우 기본적인 아이폰 앱이 있습니다. 로드탭 컨트롤러를 뷰 컨트롤러 내부에 배치하고 대리자를 배치하지 않는 방법은 무엇입니까?

  1. 앱 위임 ...
  2. 게임 루트 뷰 컨트롤러 (이것은 "게임을 계속" "게임 시작", 단 2 개 버튼입니다)
  3. 시작 게임 버튼 부하 RootViewController를 클릭
  4. .
  5. 탭 표시 줄 컨트롤러가있는 루트보기 컨트롤러 ??

아이폰 앱에서 게임이하는 일은 정말로 잘 모르겠지만 위의 내용은 최선의 추측입니다.

탭 표시 줄 컨트롤러를 RootViewController 내부에만 표시하고 싶지만 관계없이이보기 내부에 탭 표시 줄 컨트롤러를 표시 할 수 없습니다.

그러나 정상적인 탭 표시 줄을 표시 할 수 있습니다. 그러나 이것은 탭 막대 컨트롤러가 아니며 각 탭 (탐색 컨트롤러, 테이블 컨트롤러 등)의 기능을 제어해야합니다.

docs에 따르면 탭 막대 컨트롤러를 사용하는 여러 가지 방법 중 하나는 응용 프로그램의 기본 창을 사용하는 것입니다. 그러나 정상적인보기에서 사용할 수 있는지 여부는 밝혀지지 않았습니다. 또는 실제로 어떻게.

탭바 컨트롤러를 사용하지 못하게하려고 몇 번 시도했습니다.

예를 들어, 내 GameRootViewController에서 버튼을 누르면 이렇게됩니다.

-(IBAction) btnPress { 

    RootViewController *root = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; 

    [self.view addSubview:root.tabBarController.view]; 

    [root release]; 
} 

아무것도 표시되지 않습니다. 내가하는 일의 정상적인 방법을 시도 할 경우

는 :

[self.view addSubview:root.view]; 

뷰가 나타납니다하지만 탭 표시 줄 컨트롤러를 볼 수 없습니다.

이렇게하면 매우 혼란 스럽습니다.

나는 게임/앱이 할 수있는 것을 가능하게 생각하고 있어요 :

  1. 앱 위임
  2. 로드 모든 스플래시 화면을,로 ... 등
  3. 로드의 시작 게임 제작 크레딧, 게임 화면을 계속 진행하고 이들이 작성하는 동작을 처리하십시오.
  4. app 위임 창을 만들어서 self.window에 탭 표시 줄 컨트롤러를 추가하십시오.

하지만 확실하지 않습니다. 탭 컨트롤러를 뷰 컨트롤러에 넣을 수 있는지 또는 앱 대리자 내부에서만 사용할 수 있는지 명확히하고 싶습니다.

답변

3

먼저 컨트롤러를보기와 혼동하지 마십시오. 뷰는 UI의 가시적 인 부분이며 컨트롤러는 보이지 않는 객체입니다. 뷰 또는 컨트롤러 내부의 컨트롤러를 다른 컨트롤러 내부에 두지 마십시오. 대신 컨트롤러는 다양한 계층 구조로 존재하며 계층 구조에 따라 언제, 어디에서 어떤보기가 표시되는지가 결정됩니다.

당신은 (사용자를 혼동 할 수있는)이 없음 표준 방법으로 TabBar의를 사용하지만, 당신이 좋아 보이는 계층 구조를 얻을 수 있도록 탐색 컨트롤러 내부의 TabBar의 컨트롤러를 넣어 필요

:

navigationController (rootViewController) 
    -->TabBarController(secondController) 
     -->tabViewController1 
     -->tabViewController2 
     -->tabViewController3 

을 그래서를 첫 번째로 볼 수있는 뷰는 navigationController의 rootController에 의해 제어되는 버튼 뷰입니다. 버튼을 선택하면 TabViewController가 기본 탭이 선택된보기로 이동하는 탐색 스택으로 이동합니다. (사용자가 탐색 스택을 보이지 않게하려면 탐색 막대를 숨겨야합니다.)

+0

아는 것이 있습니다. 그러나 이것은 앱 위임자가 rootViewController를로드하는 navigationController를 사용한다는 것을 의미하지는 않습니다. 또는 rootViewController가 navigationController를 보유하고 있다고 말하고 있습니까? IE :'@interface RootViewController : UINavigationController'? – zardon

+0

다른 방법. 탐색 컨트롤러에는 rootViewController가 있습니다. nav contoller가 보이지 않기 때문에 rootViewController가 "top"컨트롤러 인 것처럼 보입니다. tabbar 컨트롤러를 nav 스택으로 밀어 넣으면 tabbar가 이제 "top"처럼 보입니다. nav과 rootViewController가 어떻게 상호 작용하는지 보려면 Xcode 탐색 기반 템플릿을 참조하십시오. 구현을 위해 수행해야 할 작업은 탭 스택 컨트롤러를 탐색 스택의 두 번째 컨트롤러로 푸시하는 것입니다. – TechZen

+0

할거야. 바라기를 나는 거기에 도착할 것이다. 감사. – zardon