【问题标题】:iPhone - MFMailComposeViewController delegate incompatible typeiPhone - MFMailComposeViewController 委托不兼容类型
【发布时间】:2012-03-17 20:43:29
【问题描述】:

我有一个视图控制器,它以模态方式打开一个 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 中初始化邮件视图控制器的方式:

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

提前感谢您的任何想法。

【问题讨论】:

    标签: iphone objective-c ios mfmailcomposeviewcontroller messageui


    【解决方案1】:

    你想设置mailComposeDelegate而不是delegate

    self.mail.mailComposeDelegate = self;
    

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

    【讨论】:

    • 没有问题。这是我犯过很多次的错误,直到今天我有点困了!你并不孤单:-)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2023-03-03
    • 2012-02-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多