NSObjectをサブクラス化するクラスには、MFMailComposeViewControllerを表示する関数があります。コードは次のとおりです。MFMailComposeViewControllerはキャンセルボタンで閉じることはありません
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
[mailController setSubject:@"Sample Subject"];
[mailController setMessageBody:@"Here is some main text in the email!" isHTML:NO];
[mailController setToRecipients:@[self.email]];
UITabBarController *tabbarController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *navigationController = tabbarController.selectedViewController;
[navigationController.topViewController presentViewController:mailController animated:YES completion:NULL];
すべてがこのコードでうまくいきます。問題は私がMFMailComposeViewController
を却下したいときです。時々私はクラッシュする、時にはそれは何も起こらない。私が表示され、ViewControllerをからそれをdirectlty解任しようとしましたが、すべてが働いていた。その後
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
UITabBarController *tabbarController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *navigationController = tabbarController.selectedViewController;
[navigationController.topViewController dismissViewControllerAnimated:YES completion:nil];
}
:私は、デリゲートの機能を実装しました。キャンセルボタンさえ。
私のViewControllerクラスでは動作しますが、NSObjectのサブクラスでは動作しません。
私は、ログで見てきたクラッシュを取得:
-[MFMailComposeInternalViewController _notifyCompositionDidFinish]
が持っている...この
のViewController私はこれが働くことを願っています
をdissmissする
セットデリゲートのようなあなたのシングルトンクラスでこれを試してみてくださいMFMailComposeViewDelegatを追加するヘッダファイル内の...? –
はい、私はしました。さて、私は.mファイルに追加しましたが、それは同じです。 –
さらなるヘルプのために、クラッシュログに関するいくつかの情報を掲載してください。 –