MFMailComposeViewController を閉じることができません。デリゲートが呼び出されません。質問する

MFMailComposeViewController を閉じることができません。デリゲートが呼び出されません。質問する

MFMailComposeViewController私はから呼び出していますUITableViewController。問題は、選択時にデリゲートメソッドが呼び出されないことです。キャンセルまたは送信メール作成ウィンドウのボタン:

mailComposeController:(MFMailComposeViewController*)controllerdidFinishWithResult 

テーブル ビュー クラスは次のとおりです。

@implementation DetailsTableViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section==0 && indexPath.row==4) {
        //SEND MAIL
        MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
        controller.mailComposeDelegate = self;
        if ([MFMailComposeViewController canSendMail]) {
            [controller setSubject:[NSString stringWithFormat:@"Ref %@",[item objectForKey:@"reference"]]];
            [controller setMessageBody:@" " isHTML:NO]; 
            [controller setToRecipients:[NSArray arrayWithObject:[item objectForKey:@"email"]]]; 
            [self presentModalViewController:controller animated:YES];
        }
        [controller release];       
    }
}

- (void)mailComposeController:(MFMailComposeViewController*)controllerdidFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    // NEVER REACHES THIS PLACE
    [self dismissModalViewControllerAnimated:YES];
    NSLog (@"mail finished");
}

アプリケーションはクラッシュしません。キャンセルまたは送信ボタンが押された後、ボタンが無効になった状態で作成ウィンドウが画面上に残ります。Home キーを押してアプリケーションを終了できます。

TableView から他のモーダル ビューを開くことはできますが、MailCompose からは開くことができません。

ベストアンサー1

必ず使用してください

controller.mailComposeDelegate = self;

そしてそうではない

controller.delegate = self;

おすすめ記事