Измените цвет оттенка панели навигации при модальном представлении нового контроллера представления в iOS 4.x

На мой взгляд контроллер у меня есть следующий код

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"%s",__PRETTY_FUNCTION__);

    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:201.0/255.0 green:201.0/255.0 blue:201.0/255.0 alpha:1.0];
}

На этом экране, когда я нажимаю кнопку, я представляю MFMailComposeViewController модально. Когда я представляю MFMailComposeViewController модально, панель навигации того же цвета, что и в viewWillAppear, Я хочу, чтобы по умолчанию синий цвет, как Apple сказал, не настраивайте это представление. Вот мой код, который я пробовал

Код 1:

-(void)sendEmailWithWithRecipients:(NSArray*)recipients andData:(NSData*)data {

    if ([MFMailComposeViewController canSendMail]){

        MFMailComposeViewController *mailComposeViewController = [[MFMailComposeViewController alloc] init]; 

        mailComposeViewController.mailComposeDelegate = self;

        self.navigationController.navigationBar.tintColor = nil;
        [self presentModalViewController:mailComposeViewController animated:YES];
        [mailComposeViewController release]; 
    }  
    else {
        [self showAlertWithTitle:@"Alert" andMessage:@"Can not send email. Please check your email settings."];
    }
}

Но приведенный выше код не работает для оттенка цвета

Код 2: Установите цвет оттенка в viewWillDisappear

-(void)viewWillDisappear:(BOOL)animated {
    NSLog(@"%s",__PRETTY_FUNCTION__);
    self.navigationController.navigationBar.tintColor = nil;
    [super viewWillDisappear:animated];
}

Код 2 тоже не работает.

Но это работает нормально в iOS5 без настройки tintColor = nil представляя MFMailComposeViewController модально и в viewWillDisappear, Не работает iOS 4.x

У кого-нибудь есть решение для этого? Благодарю.

3 ответа

Вы можете настроить цвет оттенка навигационной панели, открыв topController вашего ViewController (ViewController, который вы предварительно устанавливаете).

Пример:

[self presentModalViewController:yourController animated:YES];
yourController.topViewController.navigationController.navigationBar.tintColor = 
    [UIColor (Your Color)];

Попробуйте установить стиль панели навигации, а не цвет оттенка. Цвет оттенков и стиль полос имеют немного разные побочные эффекты, поэтому, хотя я не до конца понимаю ваши потребности, это может быть именно то, что вы ищете.

[self.navigationController.navigationBar setBarStyle:UIBarStyleDefault];

или же

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

И убедитесь, что вы делаете это в контексте контроллера модального представления, а не предыдущего контроллера представления.

Вместо ноля попробуйте это [UIColor ClearColor];

Другие вопросы по тегам