删除电子表格中的自定义导航栏

Cod*_*ton 1 objective-c uinavigationbar ios mfmailcomposeviewcontroller

我在我的App Delegate中有这个代码:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"Nav Bar.png"] forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

这很好用,但我使用它MFMailComposeViewController,我希望它具有默认的NavigationBar外观.

我怎么做?

编辑:

我试过这段代码:

[[UINavigationBar appearanceWhenContainedIn: [MFMailComposeViewController class], [UIViewController class], nil] setBackgroundImage:[UIImage imageNamed:@"Textured Background.png"] forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

我也试过只有这个代码.没有什么变化.默认导航栏,包括邮件视图控制器.

我认为它可能与之相关appearanceWhenContainedIn:.有谁知道MFMailComposeViewController会包含什么?

Cod*_*ton 6

我想到了!这是代码:

[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
MFMailComposeViewController *emailVC = [[MFMailComposeViewController alloc] init];
//the rest of the implementation goes here...
[self presentViewController:emailVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

然后,我将导航栏外观设置为正常:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"Nav Bar.png"] forBarMetrics:UIBarMetricsDefault];
    [self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)