Измените цвет оттенка панели навигации при модальном представлении нового контроллера представления в 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;
И убедитесь, что вы делаете это в контексте контроллера модального представления, а не предыдущего контроллера представления.