15

私はMFMailComposeViewControllerをモーダルで開くビューコントローラを持っています。私は親ビューコントローラにメールView Controllerのデリゲートを設定しようとすると、私はこの警告を得る:iPhone - 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"); 
} 

親ビューコントローラがUINavigationControllerDelegateとして認識されている理由は、実際にはわかりません。これらのメソッドを実装していないため、またはそのように宣言していないためです。私はそれについて心配しないでしょうが、デリゲートメソッドが呼び出されることはありませんので、私はこの "不一致"が問題の一部であると推測しています。

それが助け場合は、これは私がviewDidLoadで、メールビューコントローラをinittingい方法です:あなたが持つかもしれない考えを事前に

// MAIL 
self.mail = [[MFMailComposeViewController alloc] init]; 
self.mail.delegate = self; 

感謝。

答えて

29

あなたがdelegateではなくmailComposeDelegateを設定したい:

self.mail.mailComposeDelegate = self; 

基本的に、あなたはUINavigationControllerからMFMailComposeViewController継承は、delegateニーズがUINavigationControllerDelegateを実装することを意味するのでdelegateを設定しました。

+0

ビンゴ、ありがとうございます! – Rob

+2

probsはありません。それは私が何度も何度も作った間違いであり、私はちょっと眠そうですが、今日までやっています!あなたは一人じゃない :-)。 – mattjgalloway

+0

mattjgalloway、ありがとうございます! :) – Oleg

関連する問題