2010-03-27 6 views
5

Soy nuevo en el desarrollo de iphone. He creado una aplicación basada en tabbar. En la primera quiero que se muestre el compositor de correo electrónico. Puedo mostrarlo pero el botón de cancelar y enviar no funciona, no sé dónde me equivoco. Por favor, ayúdenme. Aquí está mi código.¿No se puede descartar la vista del compositor de correo electrónico en iPhone?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self displayComposerSheet];  
} 

-(void)displayComposerSheet 
{ 
    picker = [[MFMailComposeViewController alloc] init]; 

    [[picker navigationBar] setTintColor:[UIColor blackColor]]; 

    picker.mailComposeDelegate = self; 

    if ([MFMailComposeViewController canSendMail]) 
    { 

      [picker setToRecipients:[NSArray arrayWithObjects:@"[email protected]",nil]]; 

      [picker setSubject:@"Sample"]; 

    } 
    [self.view addSubview:picker.view]; 
    [self presentModalViewController:picker animated:YES]; 

} 

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 

    [self dismissModalViewControllerAnimated:YES]; 

} 

Respuesta

1

Usted está presentando el compositor de correo dos veces.

Retire la línea:

[self.view addSubview:picker.view]; 

y sustituir la siguiente línea con:

[self.navigationController presentModalViewController:picker animated:YES]; 
+0

Lo sentimos, ahora no puedo ver la vista del autor del correo. – Warrior

+0

Quiero que la barra de pestañas sea visible en la vista del compositor de correo – Warrior

0

Conjunto Delegado de MFMailComposeViewController

MFMailComposeViewController *mailcomposer = [[MFMailComposeViewController alloc]init]; 

mailcomposer.mailComposeDelegate = self; 

y utilizar este método Delegado

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
} 
0

Usar este código:

MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; 
controller.mailComposeDelegate = self; 
NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
[controller setToRecipients:toRecipients]; 
[controller setTitle:@"Contact Us"]; 
controller.modalPresentationStyle = UIModalPresentationFormSheet; 
[self presentModalViewController:controller animated:YES]; 


- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
    [self becomeFirstResponder]; 
    NSString *strMailResult; 
    switch (result) 
    { 
     case MFMailComposeResultCancelled: 
     strMailResult = NSLocalizedString(@"E-Mail Cancelled",@""); 
     break; 
     case MFMailComposeResultSaved: 
     strMailResult = NSLocalizedString(@"E-Mail Saved",@""); 
     break; 
     case MFMailComposeResultSent: 
     strMailResult = NSLocalizedString(@"E-Mail Sent",@""); 
     break; 
     case MFMailComposeResultFailed: 
     strMailResult = NSLocalizedString(@"E-Mail Failed",@""); 
     break; 
     default: 
     strMailResult = NSLocalizedString(@"E-Mail Not Sent",@""); 
     break; 
    } 

    UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ISO Audit",@"") message:strMailResult delegate:self cancelButtonTitle:NSLocalizedString(@"OK",@"") otherButtonTitles:nil]; 
    [alertView show]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 
3

Si va a añadir solamente subvista de mailcomposser hay que sacarlo de self.view, En su código está agregando subvista y presente también,

Si Sólo debe utilizar [self.view addSubview:picker.view]; que Intente con para eliminarlo.

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
    [controller.view removeFromSuperview]; 

} 

Todavía estoy sugieren utilizar

[self.navigationController presentModalViewController:picker animated:YES]; para el presente MFMailComposeViewController,

y utilizar [self dismissModalViewControllerAnimated:YES]; para descartarla.

Cuestiones relacionadas