2013-09-24 3 views
1

Я разрабатываю приложение для iOS 7 и использовал MFMailComposerViewController.Как использовать MFMailComposerViewController на iOS 7?

Я пробовал все, кроме dismissViewController:withAnimated не работает.

иногда класс автоматически вызывает делегат сам по себе, когда он сначала отображает viewController, используя метод presentViewCOntroller:withAnimated:completion.

Мое приложение основано на навигации, поэтому я думаю, что проблема связана только с UINavigationController.

 -(void)sendMail{ 

if ([MFMailComposeViewController canSendMail]) { 

    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    picker.mailComposeDelegate = self; 

    [picker setSubject:@"Hello from California!"]; 

    // Set up recipients 
    NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
    NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
    NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

    [picker setToRecipients:toRecipients]; 
    [picker setCcRecipients:ccRecipients]; 
    [picker setBccRecipients:bccRecipients]; 



    // Fill out the email body text 
    NSMutableString *emailBody =[NSMutableString stringWithString: @"<table border=1 align=\"center\"><tr><th>EventDate</th><th>EventDay</th><th>EventTime</th><th>Speaker</th><th>topic</th></tr>"]; 

    for (int i=0; i<5; i++) { 
     NSString *eventDate=[NSString stringWithFormat:@"<tr><td>%@</td>",@"12/11"]; 
     NSString *eventDay=[NSString stringWithFormat:@"<td>%@</td>",@"Sunday"]; 
     NSString *eventTime=[NSString stringWithFormat:@"<td>%@</td>",@"12:10 pm"]; 
     NSString *eventSpeaker=[NSString stringWithFormat:@"<td>%@</td>",@"RajVeer"]; 
     NSString *eventTopic=[NSString stringWithFormat:@"<td>%@</td>",@"nano-technology"]; 
     NSString *dataString=[NSString stringWithFormat:@"%@%@%@%@%@</tr>",eventDate,eventDay,eventTime,eventSpeaker,eventTopic]; 
     [emailBody appendString:dataString]; 
    } 
    NSString *[email protected]"</table>"; 
    [emailBody appendString:lastTable]; 
    NSLog(@"%@",emailBody); 
    [picker setMessageBody:emailBody isHTML:YES]; 

    [self presentViewController:picker animated:YES completion:NULL]; 


} 
+3

Покажите нам код, который вы используете, чтобы представить и отклонить контроллер представления. –

+2

На iOS 7 он работает так, как он работал на более ранних версиях iOS (только что протестирован). Это должно быть проблемой с вашим кодом. –

ответ

0

Используйте этот код, чтобы представить MFMailComposeViewController

[self presentViewController:mailComposerObject animated:YES completion:NULL]; 

Для отклонять MFMailComposeViewController

#pragma mark - MFMailComposeViewControllerDelegate 
-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult: (MFMailComposeResult)result error:(NSError*)error { 
[self dismissViewControllerAnimated:YES completion:NULL]; 
} 

с прошивкой 6.0 [self presentModalViewController:<#(UIViewController *)#> animated:<#(BOOL)#>] устарела.

+3

[self rejectViewControllerAnimated: YES завершение: NULL]; не работает на iOS 7 – Ravee10

1

Это должно сделать трюк:

#pragma mark MFMailComposeViewControllerDelegate 

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { 
    [controller dismissViewControllerAnimated:YES completion:nil]; 
} 
Смежные вопросы