2014-05-15 4 views
0

(iOS7 질문) NavigationController에 TabBarController를 삽입하는 것이 좋지 않다는 것을 알고 있습니다. 그러나 실제로 필요한 경우 해결책이 있습니까? stroyboard는 "This"과 같습니다. backBarItem 루트 'ProjTVC'에 부모의 SampleTVC '에 팝업,하지만하지 않습니다'ItemTVC '에서NavigationController-> TabBarController-> {NavigationController, NavigationController}

  1. 이유 : 여기

    문제인가? 라고하면 'SampleTVC'에서
  2. :
    [self.navigationController setNavigationBarHidden:NO]
    그리고
    [self.navigationController.navigationController setNavigationBarHidden:YES]
    을 가장 가까운 조상 탐색 모음을 루트 탐색 모음을 숨기고 표시하는 방법 루트의 navigationItem의 backBarButtonItem에 가장 가까운 조상 탐색 모음의 leftBarButtonItem을 설정하는 방법? .?

  3. 모두 탐색 모음이 숨겨져 있지 않은 경우, 루트 탐색 모음 루트 탐색 모음에 rightBarButtonItem을 추가하는 방법, (가장 가까운 조상 네비게이션 바의 상단에 표시 지배하지만 것 I 시도 :
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)]self.navigationItem setRightBarButtonItem:addButton을 하지만 어떤 버튼이 표시되지 않습니다.

  4. 그 이후의 탐색 뷰에 어떤 영향을 결코 self.navigationController.backBarButtionItem 설정. 그것은 항상 전무하다.

self.navigationItem이 따를 때 엉망을 완료 얻을 나에게 보인다 bBarController와 NavigationController는이 구성에서 혼합되어 있습니다.

(내가 사용 못생긴 솔루션입니다 : [self.navigationController.navigationController popViewControllerAnimated:YES],
를 호출 한 후, 다음 가장 가까운 조상 탐색 모음의 leftBarButtonItem에 UIBarButtonItem을 할당, 먼저 루트 탐색 모음을 숨길 수 있지만,이 버튼은 'backBarButtionItem'등 다른 스타일이 될 것입니다 현재 표시된 backBarButtionItem의 복사본을 다른 탐색 모음의 항목에 가져 오는 방법)

답변

0

아키텍처 관점과 UX 관점 모두에서이 작업을 수행하면 안됩니다. 하지만 ... 네비게이션 컨트롤러의 두 번째 세트는 필요하지 않습니다. 그들은 뿌리 내비게이션 컨트롤러의 push와 pop을 잘 사용해야합니다. Nav 컨트롤러의 탭 컨트롤러가 잘못되었습니다. 그러나 nav 컨트롤러 내부의 탭 컨트롤러에있는 Nav 컨트롤러는 더 나쁩니다.

편집 :

당신이 탐색 항목을 수정하려면

, 당신은 탭 컨트롤러에 그들을 설정해야합니다. 내비게이션 컨트롤러의 "현재"보기 컨트롤러이므로 내비게이션 항목이 탐색 막대에 표시됩니다.

+0

감사합니다. tabBarController 안의 탐색 컨트롤러를 제거했습니다. 이제는 제대로 segue 수 있습니다. (질문 1이 풀립니다.) – wanyancan

+0

@wanyancan 탭 컨트롤러에 탐색 항목을 설정해야합니다. 네비게이션 컨트롤러는 네비게이션 항목을 보유하고있는 탑 뷰 컨트롤러에서 무엇이든 탐색 항목을 선택합니다. – InkGolem

+0

'self.tabBarController.navigationItem'을 사용하는 것이 맞습니까? 알았다. 나는 반 직관적 인 것처럼 보인다. 'self.navigationItem'은'self'가 무엇이든 관계없이 화면의 네비게이션 바에서 볼 수있는 항목이 아니겠습니까? – wanyancan

0

감사합니다. 내비게이션 컨트롤러를 제거했습니다. 이제는 제대로 segue 수 있습니다. (질문 1이 풀린다.) RightBarButton 누락에 대해서는

는 사실이이 때 self.navigationItem 실제로 숨겨져있는 것을 발견하기 정말 까다 롭습니다

if (self.tabBarController) {  
self.tabBarController.navigationItem.rightBarButtonItem = addButton;} 
else{self.navigationItem.rightBarButtonItem = addButton; 
} 

를 추가 tabBarController의 하위 컨트롤러에서 다음, 먼저 사용자 정의 tabBarController의의 viewDidLoad에 self.navigationItem.rightBarButtonItem = addButton;을 추가하여 해결 탭 컨트롤러 내부.실제 표시된 내비게이션 막대가 실제로 있습니다. self.tabBarController.navigationItem