15

Bir MFMailComposeViewController modally'ı açan bir denetleyiciye sahibim.iPhone - MFMailComposeViewController temsilci uyumsuz türü

Assigning to 'id<UINavigationControllerDelegate>' from incompatible 
type 'MoreViewController *__strong' 

ebeveyn görünümü denetleyicisi kesinlikle kendi arayüzü bildiriminde MFMailComposeViewControllerDelegate vardır ve aşağıdaki gibi temsilci yöntemi -mailComposeController: didFinishWithResult:error: uyguluyor:

ebeveyni görünümü denetleyicisi posta görünümü kontrolörün temsilci ayarlamak çalıştığımda, bu uyarıyı almak
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
    NSLog(@"Delegate called"); 
} 

Bu yöntemleri uygulamadığımdan veya bu şekilde bildirmediğim için, ana görüntüleme denetleyicisinin neden bir UINavigationControllerDelegate olarak tanındığını anlamıyorum. Bu konuda çok endişelenmezdim, ancak temsilci yöntemi asla çağrılmaz, bu yüzden bu "uyumsuzluk" sorunun bir parçası olduğunu tahmin ediyorum.

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

peşin olabilecek herhangi düşünceler için: Eğer yardımı olacaksa ben viewDidLoad yılında, posta görünüm denetleyicisi initting am nasıl

, bu.

cevap

29

Sen delegate yerine mailComposeDelegate ayarlamak istiyorum:

self.mail.mailComposeDelegate = self; 

Temel olarak, UINavigationController dan MFMailComposeViewController devralır, delegate ihtiyaçları UINavigationControllerDelegate uygulamak anlamına gelir çünkü delegate kuruyorduk.

+0

Bingo, teşekkürler! – Rob

+2

Probs yok. Bu, bir çok kez yaptığım bir hata oldu ve hala biraz uykulu olduğum günümde! Yalnız değilsin :-). – mattjgalloway

+0

mattjgalloway, teşekkürler! :) – Oleg