Делегировать соответствие и MFMailComposeViewController

Я не могу понять, почему я должен декларировать соответствие обоим MFMessageComposeViewControllerDelegate а также UINavigationControllerDelegate когда используешь MFMessageComposeViewController,

Неспособность просто заявить о соответствии UINavigationControllerDelegate приводит к предупреждению компилятора о присвоении 'id<UINavigationControllerDelegate>' from incompatible type ViewController *const __strong'

Почему не декларирует соответствие MFMessageComposeViewControllerDelegate и реализации методов делегата в моем заголовке достаточно?

Там даже нет UINavigationControllerDelegate делегировать методы для реализации...

Соответствующий код...

Mmmmplementation:

-(void)shareTrainInformation
{
    NSLog(@"Sharing...");

    MFMessageComposeViewController *messageComposer = [[MFMessageComposeViewController alloc] init];

    messageComposer.delegate = self;

}

Заголовок:

@interface RRDetailViewDrillDownViewController : UIViewController <MFMessageComposeViewControllerDelegate, UINavigationControllerDelegate>

1 ответ

Решение

Используйте свойство mailComposeDelegate составителя: composer.messageComposeDelegate = self;

Это потому, что это имя уже занято несвязанным делегатом, объявленным в суперклассе. (UINavigationController объявляет свойство делегата.)

Другие вопросы по тегам