2011-06-16 2 views
1

Я получаю приведенный ниже аварийный журнал, когда пытаюсь использовать MFMailComposeViewController на устройстве.iPhone: Email API MFMailComposeViewController сбой на устройстве

Открывает модальный вид, когда я пытаюсь запустить его на симуляторе.

Это код, я использую:

stringHTML и html являются HTML строки.

stringHTML имеет тип NSString и html имеет тип NSMutableString.

MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; 
    mailController.mailComposeDelegate = self; 
[mailController setSubject:@"Email"]; 
NSLog(@"%@",html); 
NSString *stringHTML=html; 
NSLog(@"%@",stringHTML); 
[mailController setMessageBody:stringHTML isHTML:YES]; 
[self presentModalViewController:mailController animated:YES]; 
[mailController release]; 

Что может быть неправильным?

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target <QuizReportsView: 0x411af0>.' 
*** Call stack at first throw: 
(
0 CoreFoundation      0x3737364f __exceptionPreprocess + 114 
1 libobjc.A.dylib      0x33a30c5d objc_exception_throw + 24 
2 UIKit        0x31350fcf -[UIViewController presentModalViewController:withTransition:] + 546 
3 UIKit        0x31350cd7 -[UIViewController presentModalViewController:animated:] + 58 
4 Vocab        0x0007d1bf -[QuizReportsView actionSheet:clickedButtonAtIndex:] + 270 
5 UIKit        0x313c603d -[UIActionSheet(Private) _buttonClicked:] + 192 
6 CoreFoundation      0x372e3571 -[NSObject(NSObject) performSelector:withObject:withObject:] + 24 
7 UIKit        0x312c3ec9 -[UIApplication sendAction:to:from:forEvent:] + 84 
8 UIKit        0x312c3e69 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 32 
9 UIKit        0x312c3e3b -[UIControl sendAction:to:forEvent:] + 38 
10 UIKit        0x312c3b8d -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 356 
11 UIKit        0x312c4423 -[UIControl touchesEnded:withEvent:] + 342 
12 UIKit        0x312c2bf5 -[UIWindow _sendTouchesForEvent:] + 368 
13 UIKit        0x312c256f -[UIWindow sendEvent:] + 262 
14 UIKit        0x312ab313 -[UIApplication sendEvent:] + 298 
15 UIKit        0x312aac53 _UIApplicationHandleEvent + 5090 
16 GraphicsServices     0x31c36e77 PurpleEventCallback + 666 
17 CoreFoundation      0x3734aa97 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26 
18 CoreFoundation      0x3734c83f __CFRunLoopDoSource1 + 166 
19 CoreFoundation      0x3734d60d __CFRunLoopRun + 520 
20 CoreFoundation      0x372ddec3 CFRunLoopRunSpecific + 230 
21 CoreFoundation      0x372dddcb CFRunLoopRunInMode + 58 
22 GraphicsServices     0x31c3641f GSEventRunModal + 114 
23 GraphicsServices     0x31c364cb GSEventRun + 62 
24 UIKit        0x312d5d69 -[UIApplication _run] + 404 
25 UIKit        0x312d3807 UIApplicationMain + 670 
26 Vocab        0x00002223 main + 82 
27 Vocab        0x000021cc start + 40 
) 
terminate called after throwing an instance of 'NSException' 

ответ

7

От ошибки Это понятно, вы представляете контроллер представления в nil модальный.

Проверьте объект MFMailComposeViewController, независимо от того, строится он правильно или нет.

И AsloMFMailComposeViewController Доступно в iOS 3.0 и новее.

Попробуйте с ниже код

MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; 
if(mailController) 
{ 
    mailController.mailComposeDelegate = self; 
    [mailController setSubject:@"Email"]; 
    NSLog(@"%@",html); 
    NSString *stringHTML=html; 
    NSLog(@"%@",stringHTML); 
    [mailController setMessageBody:stringHTML isHTML:YES]; 
    [self presentModalViewController:mailController animated:YES]; 
    [mailController release]; 
} 

Для дополнительной проверки ниже.

Application tried to present a nil modal view...

Problem with Modal View Controller

+2

Спасибо много. Это действительно работало :) Почтовая учетная запись не была настроена на моем устройстве. Так что Распределение не происходило. –

11

Попробуйте это

//check if device is configured to send mails 
if([MFMailComposeViewController canSendMail]){ 
    MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; 
    if(mailController) 
    { 
    mailController.mailComposeDelegate = self; 
    [mailController setSubject:@"Email"]; 
    NSLog(@"%@",html); 
    NSString *stringHTML=html; 
    NSLog(@"%@",stringHTML); 
    [mailController setMessageBody:stringHTML isHTML:YES]; 
    [self presentModalViewController:mailController animated:YES]; 
    [mailController release]; 
    } 
} 
+0

+1 Это вероятный случай. –

+0

@ Deepak спасибо. –

+0

@Deepak, какова ваша почта Id ?. Мне нужно немного помочь. –

Смежные вопросы