2010-12-01 4 views
1

내 앱에는 두 개의 별개 모드가 있습니다. 앱 델리게이트에는 탭 바 컨트롤러가 있습니다. 서브 클래 싱 된 뷰 컨트롤러를 사용하는 두 개의 탭이 있습니다. 두 개의보기 컨트롤러에는 각각 nav 컨트롤러가 있습니다. 탐색 컨트롤러에는 루트보기 컨트롤러가 있으며 일반적으로 화면을 변경할 때 각 탐색 컨트롤러의 컨트롤러를 밀고 팝합니다. 이것은 아래쪽 탭 표시 줄이 항상 멋지고 훌륭한 소리 (보통) 효과를냅니다."탭 컨트롤러 내 탐색 컨트롤러 내에서 모달 컨트롤러 표시"문제

그러나 이번에는 모달로 화면을 표시하고 싶습니다. 사용자가 두 개의 버튼을 사용하여 페이지를 확인하거나 취소 할 수는 없습니다. 즉, 맨 아래의 탭 막대도 숨기려고합니다. 이것은 모달로보기를 모달로 표현한 경우이지만보기가 탐색 컨트롤러 경계 내에서 표시되므로 하단 탭 막대가 여전히 보이고 앱 탐색에 혼란을 야기합니다. 모달로 표시된보기가 탭 표시 줄을 숨기지 않는 것이 가능한지 확실하지 않습니다. 여기에있는 대부분의 질문은 다른 방향으로 문제가있는 것처럼 보입니다 (모달 뷰를 (잘못) 표시하고 탭 표시 줄을 그대로두기를 원함).

다음은 내 시도입니다 :이 조사

[self presentModalViewController:controller animated:YES]; // inside tab bar controller :-(
[self.tabBarController presentModalViewController:controller animated:YES]; // nothing is displayed. The new controller is instantly deallocated. 
[self.navigationController presentModalViewController:controller animated:YES]; // inside tab bar controller :-(

의 self.tabBarController 실제로는 전무하다. 탭 바 컨트롤러에 대한 링크가없는 것 같습니다 ... 탭 바 위에 모달로 표시하려면 해당 탭 바 컨트롤러에 대한 링크를 가져와야합니까?

답변

1

해결책을 찾은 것 같습니다. 어떻게 든보기 컨트롤러 호출을 시작하는보기 컨트롤러의 self.tabBarController 포인터를 사용할 수 없기 때문에 정성을 다할 것입니다.

내가 수행 한 작업은 응용 프로그램 대리인, 공개 속성으로 정의 된 탭 표시 줄 컨트롤러가있는 응용 프로그램 대리인입니다. 해당 탭 표시 줄 컨트롤러 속성을 사용하여 화면의 모든 항목에 대해 내보기 컨트롤러를 모달로 표시 할 수 있습니다.

+0

그게 내가 찾은 유일한 방법입니다. 거기에서 [window addSubview : yourModalViewController.view] 이후 탭 모음 컨트롤러를 직접 다루기보다는 창에 하위보기를 추가 할 수 있습니다. 귀하의 tabbar가 추가 된 후에 발생합니다. –

+0

어쩌면, 나는 그것을 천천히 시작하고있다. 위에서 아래쪽으로 보면 AppDelegate-> TabBarController-> ViewController-> NavController-> ViewController (+ ViewControllers가 모달로 표시됨)입니다. 이 구조의 문제는 물론, http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CombiningViewControllers/CombiningViewControllers.html의 첫 번째 단락에 설명 된대로 NavController를 일반 ViewController에 추가해서는 안됩니다. # // apple_ref/doc/uid/TP40007457-CH104-SW1 Tab Bar Set에 NavBar 컨트롤러를 추가해야합니다. – Jonny