2012-08-02 4 views
4

놀랍지는 여러 섹션으로 표준 탭 표시 줄 컨트롤러입니다. 각 섹션 (탭)에는 두 개의보기 컨트롤러 (기본 tableview + detailview 설치 유형)를 제어하는 ​​탐색 컨트롤러가 있습니다. 이제 6 번째 탭을 추가 했으므로, iOS는 마지막 두 탭을 제어하는 ​​기본 "추가"탭을 만듭니다. 탐색 모음의 가운데에있는 "추가"텍스트를 제거해야합니다 (참고 : 단추 텍스트 또는 탭 자체가 아닙니다). 탐색 모음에 사용자 정의 배경 이미지를 적용해야합니다.설정 "추가 탐색 컨트롤러의"titleView 텍스트

참고 :이 질문은 "추가"탐색 모음 사용자 지정에 대한 것입니다. iOS가 아닌 모든 탐색 모음에서 배경 이미지와 titleView 텍스트를 성공적으로 수정했습니다. 내 응용 프로그램 위임에

는 응용 프로그램이 함께 thusly 히 넣어 :

보기 컨트롤러 만들기 :

ViewController1 *vc1 = [ViewController1 alloc] [email protected]"View1" bundle:nil]; 
vc1.title = @"VC1"; 
vc1.tabBarImage.image = [UIImage imageNamed:@"image1.png"]; 

반복 뷰 컨트롤러 VC2에 대해 위의 루틴 5 번 이상 VC6을 통해.

는 개인 네비게이션 컨트롤러를 만듭니다

UINavigationController *nc1 = [UINavigationController alloc] initWithRootViewController:vc1]; 

반복 5 번 이상 탐색 컨트롤러 NC2에 대한 - nc6을.

위에서 완벽하게 작동 코드의 모든

self.tabBarController.viewControllers = [NSArray arrayWithObjects: vc1, vc2, vc3, vc4, vc5, vc6, nil]; 

탭 바 컨트롤러에 탐색 컨트롤러를 추가합니다. 문제 없음.

나는 다음 thusly 히 더 많이 탐색 컨트롤러에 사용자 정의 배경 이미지를 추가 :

if (self.tabBarController.moreNavigationController){ 
     if ([self.tabBarController.moreNavigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 
      UIImage *image = [UIImage imageNamed:@"navlogo.png"]; 
      [self.tabBarController.moreNavigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 
     } else { 
      UINavigationBar *navbar = self.tabBarController.moreNavigationController.navigationBar; 
      UIImage *headerImg = [UIImage imageNamed:@"navlogo.png"]; 
      [navbar setBackgroundImage:headerImg forBarMetrics:UIBarMetricsDefault]; 
     }  
    } 

를이 너무 잘 작동합니다. 문제 없음

내 사용자 정의 배경에 클라이언트의 로고 데드 센터가 포함되어 있으므로 기본적으로 "기타"라는 제목의 텍스트를 제거해야합니다. 참고로, 네비게이션 버튼의 텍스트가 아니라 네비게이션 바 중앙에있는 라벨에 대해 이야기합니다.

논리적으로, 하나는이 일 것이라고 생각할 겁니다 :

UILabel *label = [[UILabel alloc] init]; 
    label.text = @""; 
    self.tabBarController.moreNavigationController.navigationItem.titleView = label; 

을 ... 나는 등 self.tabBarController.moreNavigationController에 대한 self.navigationItem.titleView을 대체 개별 뷰 컨트롤러의 모든이 작업을 수행하기 때문에

하지만 작동하지 않습니다! 내 모든 탐색 컨트롤러에서 배경 코드와 titleView 텍스트를 성공적으로 변경할 수 있습니다 (다시, self.navigationController.navigationItem을 moreNavController 항목으로 대체 ...). 그러나 앱 델리게이트에서는 배경 이미지 만 설정할 수 있지만 More nav 컨트롤러의 titleView는 설정할 수 없습니다.

모든 해결책을 주시면 감사하겠습니다.

VB 응용 프로그램에서

답변

1

밖으로 끕니다있는 viewDidLoad 함수 내부의 제목을 변경할 수 있습니다, 내 원래의 코드는 잘못된 장소에, 정확했다.

UILabel *label = [[UILabel alloc] init]; 
label.text = @""; 
self.tabBarController.moreNavigationController.navigationBar.topItem.titleView = label; 

그러나, 나는 이전 전에이 을 실행 한 내 rootViewController로 tabBarController를 추가

올바른 순서는 다음과 같습니다

self.window.rootViewController = self.tabBarController; 

UILabel *label = [[UILabel alloc] init]; 
label.text = @""; 
self.tabBarController.moreNavigationController.navigationBar.topItem.titleView = label; 
0

예 : didFinishLaunchingWithOptions :이 탐색 모음의 제목을 변경하지만 "추가"로 탭 레이블 제목을 떠나는 탭 컨트롤러 아이폰 OS 템플릿

// Override point for customization after application launch. 

UITabBarController *tabBarController = (UITabBarController *)(self.window.rootViewController); 
UINavigationController *moreNavigationController = tabBarController.moreNavigationController; 
moreNavigationController.navigationBar.topItem.title = @""; 

의.

+0

답장을 보내 주셔서 다시 한 번 감사드립니다. 귀하의 솔루션은 실제로 탭 제목을 그대로두고 탐색 모음 맨 위에서 제목을 제거합니다. 그러나 More Nav Controller에 포함 된 nav 컨트롤러의 뒤로 버튼을 누클 릴 때 불행한 부작용이 있습니다. 나는 파기를 계속하고 잘하면 답변을 게시 할 것입니다. –

-2

당신은

self.title = @"" 
+1

denil 일 경우 답장은 여러 가지 이유로 정확하지 않습니다. 첫째, 내 원본 게시물은 내가 만든 View Controller의 속성이 아니라 iOS가 만든보기 컨트롤러의 속성과 관련이 없습니다. 내 게시물은 그 점에서 모호하지 않았습니다. 두 번째로, self.title 속성을 설정하면 탐색 막대 레이블뿐 아니라 탭 및 뒤로 버튼에서도 제목이 제거됩니다. 부적절하고 오해의 소지가있는 답변을 던지기 전에 질문을 더 자세히 읽으시기 바랍니다. 귀하의 게시물은 분명히 부정확하기 때문에 충분한 점수가있는 사람들에 의해 투표가 내려져야합니다. –

-1

이 스레드에서 모든 사람에게 적용되지 않을 수도 있습니다 하지만 나를 위해 ... 나는 5 개 이상의 항목으로 tabBarController를 가졌다. 자동으로 생성 된 moreNavigationController에 제목을 설정해야했다 ... viewDi에서 self.title = @ "title"을 지정하는 것처럼 간단했다. 타겟 detailviewcontroller의 dLoad 메소드.

0

나는

2.2이 대리자 메서드를 구현 didFinishLaunchingWithOptions

tabBarCtr.moreNavigationController.delegate = self 
tabBarController.moreNavigationController.viewControllers.first?.title = "" 

에 넣고

스위프트 하나를 발견

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) 
    { 
     navigationController.navigationBar.topItem?.rightBarButtonItems = nil 
     navigationController.viewControllers.first?.title = "" 

    } 

그러면 탐색 버튼이 더 많은 탐색 컨트롤러 탐색 바 위에 제거됩니다.