1

내가 통해 더있는 navigationController의 네비게이션 바의 색상을 변경할 수 있어요 더 많이 섹션의 편집 화면의 내비게이션 바 색상 변경 : 내가 편집 버튼을 클릭하면

stTabBarController.moreNavigationController.navigationBar.tintColor = [UIColor colorWithRed:(102.0/255.0) green:(20.0/255.0) blue:(11.0/255.0) alpha:1]; 

하지만를 구성 화면이 나타나고 기본 색상은 navbar color입니다. 이 색상을 어떻게 바꿀 수 있습니까?

답변

2

그것을 해결 :이 질문에 다른 사람에게

#pragma mark UITabBarControllerDelegate 
- (void)tabBarController:(UITabBarController *)controller willBeginCustomizingViewControllers:(NSArray *)viewControllers { 
    UIView *editViews = [controller.view.subviews objectAtIndex:1]; 
    UINavigationBar *editModalNavBar = [editViews.subviews objectAtIndex:0]; 

    editModalNavBar.tintColor = [UIColor colorWithRed:(102.0/255.0) green:(20.0/255.0) blue:(11.0/255.0) alpha:1]; 

} 
+0

나는 인덱스 0에서 UINavigatonBar를 얻는 것처럼 보였습니다. 로그하는 하위 뷰는 인덱스 1 (iOS 8에서 작업 중)에서 발견되었습니다. –

0

, 위해 시핸 알람의 솔루션이 작동하려면, 당신은 당신이 이렇게 같이있는 viewDidLoad 메서드 내에서 자체에 tabBarController의 대리자를 설정 있는지 확인해야합니다

@interface TabBarController : UITabBarController <UITabBarControllerDelegate> { 
    ... 
} 
:
- (void)viewDidLoad { 
    ... 
    self.delegate = self; 
    ... 
} 

그런 다음 당신은 당신의 tabBarController 지금처럼 UITabBarControllerDelegate 프로토콜을 준수 확인해야

그렇지 않으면 그가 재정의하는 메서드가 호출되지 않습니다.

+0

앱 위임에서이 작업이 수행됩니까? 그렇지 않다면? – Sam

0

@Sheehan Alam 솔루션이 나를 위해 작동하지 않았습니다 (iOS 8에서 작동). 어쨌든 나는 그의 대답에서 2/3의 해결책을 얻었다. 답변을 개선하기 위해 게시하고 있습니다.

#prama mark - UITabBarControllerDelegate 
- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers { 

    UIView *editViews = [tabBarController.view.subviews objectAtIndex:1]; 

    for (UIView * view in [editViews subviews]) { 
     if ([view isKindOfClass:[UINavigationBar class]]) { 
      UINavigationBar *editNavBar = (UINavigationBar *)view; 
      editNavBar.barTintColor = [UIColor redColor]; 
     } 
    } 
}