1

я в состоянии изменить NavBar цвет Подробнее navigationcontroller через:Изменение цвета Панель навигации на экране редактирования из Подробнее раздела

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

, но когда я нажимаю на кнопку Edit, экран Настройка появляется и Цвет навигатора - синий по умолчанию. Как я могу изменить этот цвет?

ответ

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

Я, похоже, получил UINavigatonBar по индексу 0. В то время как логирование подзаголовков было обнаружено, он был индексирован в 1 (работает на iOS 8.). –

0

Для тех, кто еще с этим вопросом, для того, чтобы решение Sheehan Alam, чтобы работать, вы должны убедиться, что вы установите делегат в tabBarController к себе в методе viewDidLoad так:

- (void)viewDidLoad { 
    ... 
    self.delegate = self; 
    ... 
} 

Затем вы должны убедиться, что ваш tabBarController соответствует протоколу UITabBarControllerDelegate следующим образом:

@interface TabBarController : UITabBarController <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]; 
     } 
    } 
} 
Смежные вопросы