iPhone - MFMailComposeViewController委托不兼容的类型

时间:2012-03-17 20:43:29

标签: iphone objective-c ios mfmailcomposeviewcontroller messageui

我有一个视图控制器,可以模态打开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,因为我没有实现这些方法,也没有声明它。我不会那么担心,但委托方法永远不会被调用,所以我猜这个&#34;不匹配&#34;是问题的一部分。

如果有帮助,这就是我在viewDidLoad中使用邮件视图控制器的方式:

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

提前感谢您的任何想法。

1 个答案:

答案 0 :(得分:29)

您想设置mailComposeDelegate而不是delegate

self.mail.mailComposeDelegate = self;

基本上,您设置了delegate,因为MFMailComposeViewController继承自UINavigationController,这意味着delegate需要实施UINavigationControllerDelegate