2010-03-27 10 views
5

Sono nuovo nello sviluppo di iphone. Ho creato un'applicazione basata su tabbar. Nel primo voglio che sia visualizzato il compositore di email. Sono in grado di visualizzarlo ma il pulsante di annullamento e invio non funziona, non so dove vado storto. Ti prego di darmi una mano. Ecco il mio codice.Impossibile chiudere la visualizzazione del compositore e-mail in 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]; 

} 

risposta

1

Stai presentando il compositore di posta due volte.

Rimuovere la riga:

[self.view addSubview:picker.view]; 

e sostituire la riga successiva con:

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

Siamo spiacenti, ora non sono in grado di vedere la vista del compositore di posta elettronica. – Warrior

+0

Voglio la barra delle schede visibile nella vista del compositore di posta – Warrior

0

Set delegato del MFMailComposeViewController

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

mailcomposer.mailComposeDelegate = self; 

e utilizzare questo metodo delegato

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

di questo codice:

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

Se si aggiunge solo visualizzazione secondaria di mailcomposser è necessario rimuoverlo dalla self.view, Nel codice si sta aggiungendo visualizzazione secondaria e presente anche,

Se si utilizza solo l'uso di [self.view addSubview:picker.view]; rispetto a Provare a rimuoverlo.

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

} 

Sono ancora suggeriscono di utilizzare

[self.navigationController presentModalViewController:picker animated:YES]; per il presente MFMailComposeViewController,

e utilizzare [self dismissModalViewControllerAnimated:YES]; di respingerlo.