15

मेरे पास एक व्यू कंट्रोलर है जो एक MFMailComposeViewController को सामान्य रूप से खोलता है।आईफोन - 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 के रूप में पहचाना जा रहा है, जैसा कि मैंने उन तरीकों को लागू नहीं करते और न ही मैं इसे इस तरह के रूप में घोषित है। मैं इसके बारे में इतना चिंतित नहीं हूं लेकिन प्रतिनिधि विधि को कभी भी बुलाया नहीं जाता है, इसलिए मुझे लगता है कि यह "मेल नहीं खाता" समस्या का हिस्सा है।

यदि यह मदद करता है, यह है कि कैसे मैं मेल दृश्य नियंत्रक initting कर रहा हूँ, viewDidLoad में: कोई विचार आप हो सकता है के लिए पहले से

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

धन्यवाद।

उत्तर

29

आप delegate बजाय mailComposeDelegate सेट करना चाहते हैं:

self.mail.mailComposeDelegate = self; 

मूल रूप से, आप delegate जो क्योंकि UINavigationController से MFMailComposeViewController इनहेरिट करती है, इसका मतलब है कि delegate जरूरतों UINavigationControllerDelegate लागू करने के लिए स्थापित कर रहे थे।

+0

बिंगो, धन्यवाद !! – Rob

+2

कोई जांच नहीं। यह एक गलती है जिसे मैंने कई बार बनाया है और अभी भी इस दिन तक करता हूं जब मैं थोड़ा नींद आती हूं! तुम अकेले नहीं हो :-)। – mattjgalloway

+0

mattjgalloway, धन्यवाद! :) – Oleg