3

在我的视图控制器中,我有以下代码

- (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 中运行良好,无需在. 它不工作 iOS 4.xtintColor = nilMFMailComposeViewControllerviewWillDisappear

有人对此有解决方案吗?谢谢。

4

3 回答 3

3

您可以通过访问yourController的(您正在预设的 ViewController)topViewController 来自定义导航栏的色调颜色。

前任 :

[self presentModalViewController:yourController animated:YES];
yourController.topViewController.navigationController.navigationBar.tintColor = 
    [UIColor (Your Color)];
于 2012-08-22T10:52:36.687 回答
1

尝试设置导航栏样式而不是色调。色调颜色和条形样式的副作用略有不同,因此虽然我不完全了解您的需求,但它可能正是您正在寻找的。

[self.navigationController.navigationBar setBarStyle:UIBarStyleDefault];

或者

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

并确保您在模态视图控制器的上下文中执行此操作,而不是之前的视图控制器。

于 2012-07-20T18:18:23.090 回答
0

而不是 nil 试试这个[UIColor ClearColor];

于 2012-04-26T07:32:30.930 回答