MFMailComposeViewController をモーダルで開くビュー コントローラーがあります。メール ビュー コントローラーのデリゲートを親ビュー コントローラーに設定しようとすると、次の警告が表示されます。
Assigning to 'id<UINavigationControllerDelegate>' from incompatible
type 'MoreViewController *__strong'
親ビュー コントローラーには、インターフェイス宣言に MFMailComposeViewControllerDelegate が含まれており-mailComposeController: didFinishWithResult:error:
、次のようにデリゲート メソッドを実装しています。
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
NSLog(@"Delegate called");
}
親View ControllerがUINavigationControllerDelegateとして認識されている理由が本当にわかりません。これらのメソッドを実装していないか、そのように宣言していないからです。それほど心配する必要はありませんが、デリゲート メソッドが呼び出されることはないため、この「不一致」が問題の一部であると推測しています。
それが役立つ場合、これは私がメールビューコントローラーを初期化する方法ですviewDidLoad
:
// MAIL
self.mail = [[MFMailComposeViewController alloc] init];
self.mail.delegate = self;
ご意見をお寄せいただきありがとうございます。