MailComposeView从导航堆栈中解除另一个视图控制器

时间:2014-10-10 10:17:14

标签: ios objective-c uinavigationcontroller mfmailcomposeviewcontroller

我在Tabbar中有一个包含5个项目的故事板应用程序。我为每个标签项使用单独的导航控制器。

当我在Tabbar中选择第4项时,导航控制器会加载初始视图控制器。然后我又推了2个控制器。导航堆栈中的第三个视图控制器包含一个按钮,允许我发送电子邮件。因此,当我点击按钮时,我将使用以下代码呈现“MFMailComposeViewController”。

if([MFMailComposeViewController canSendMail]) {
    MFMailComposeViewController *mailCont = [[MFMailComposeViewController alloc] init];
    mailCont.mailComposeDelegate = self;
    [mailCont setToRecipients:[NSArray arrayWithObject:self.lblEmail.text]];
    [mailCont setSubject:@"Your email"];
    [mailCont setMessageBody:@"Your message" isHTML:NO];

    [self presentViewController:mailCont animated:YES completion:nil];
}

然后在我的“didFinishWithResult”代表中,我正在驳回所提交的邮件撰写视图。但它从我的导航堆栈和应用程序中解除了额外的2个视图控制器在导航控制器的根视图中。

我尝试了各种方法来解除所提供的邮件撰写视图。 请参阅下面的代码段。

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:   (MFMailComposeResult)result error:(NSError*)error
{
    //... 1st approach ...
    [self dismissViewControllerAnimated:YES completion:nil];

    //... 2nd approach ...
    [controller dismissViewControllerAnimated:YES completion:nil];

    //... 3rd approach ...
    [self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
}

请帮帮我,我和他坐了好几个小时。

非常感谢你。

0 个答案:

没有答案