15

저는 MFMailComposeViewController를 모달로 여는보기 컨트롤러가 있습니다.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로 인식되는 이유를 이해하지 못합니다. 그 방법을 구현하지도 않고 선언하지도 않습니다. 그렇게 걱정하지는 않지만 위임 메서드는 호출되지 않습니다. 그래서이 "불일치"가 문제의 일부라고 생각합니다.

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

감사를 사전에 가질 수있는 생각에 대해 : 도움이된다면 내가 viewDidLoad에, 메일 뷰 컨트롤러를 initting 얼마나

이입니다.

답변

29

당신은 delegate보다는 mailComposeDelegate을 설정하려면 :

self.mail.mailComposeDelegate = self; 

기본적으로, 당신은 UINavigationController에서 MFMailComposeViewController 상속이 delegate 필요 UINavigationControllerDelegate을 구현하는 것을 의미하기 때문에 delegate을 설정했다.

+0

빙고, 감사합니다! – Rob

+2

probs 없음. 그것은 내가 여러 번 만들었던 실수이고, 나는 조금 졸 렸을 때도 여전히 오늘에 이른다! 당신은 혼자가 아닙니다 :-). – mattjgalloway

+0

mattjgalloway, 감사합니다! :) – Oleg