1

4 つのセクションを持つテーブル ビューがあります。セクションの 1 つのセルには、電子メール アドレスが含まれています。そのセルをクリックすると、メールビューコントローラーが開きます。ナビゲーション バーにあるキャンセル ボタンをクリックすると、3 つのボタンがあるアクション シートが表示されます。これらの 3 つのボタンの 1 つがキャンセル ボタンです。アクションシートのこのキャンセルボタンをクリックすると、テーブルビューに戻りたいと思います。私は可能なすべての方法を試しました

-(void)mailComposeController:
(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error

MFMailComposeViewControllerデリゲート の方法。

私を助けてください。これが私のコードです:

if(indexPath.section == 2)
    {

if([MFMailComposeViewController canSendMail])

{

MFMailComposeViewController *mailcontroller = [[MFMailComposeViewController alloc]init];
               [mailcontroller.mailComposeDelegate self];
               [mailcontroller setToRecipients:[[NSArray alloc]initWithObjects:record.contactemail, nil]];
               [self presentViewController:mailcontroller animated:YES completion:nil];

}

}

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error

{

[self dismissViewControllerAnimated:YES completion:nil];
}
4

1 に答える 1

3

最初に、次のようにファイルにこの 2 つのデリゲートを追加します.h...

@interface yourViewController : UIViewController<
MFMessageComposeViewControllerDelegate, MFMailComposeViewControllerDelegate>{
   ///your code..
}

そして、次のように自分自身にデリゲートを与えます...

MFMailComposeViewController *mailcontroller = [[MFMailComposeViewController alloc]init];
mailcontroller.mailComposeDelegate = self;

そして私のこの方法を試してください...

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    if (result == MFMailComposeResultSent) 
    {
        NSLog(@"\n\n Email Sent");
        [AppDelegate showAlert:@"Email Sent"];

    }
    if([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
        [self dismissViewControllerAnimated:YES completion:nil];
    else
        [self dismissModalViewControllerAnimated:YES];
//    [self dismissViewControllerAnimated:YES completion:nil];
}

これを試して

于 2013-03-28T08:57:06.233 に答える