2010-03-27 4 views
5

Ich bin neu in der iPhone-Entwicklung. Ich habe eine Tabbar-basierte Anwendung erstellt. In der ersten möchte ich den E-Mail-Composer angezeigt werden. Ich kann es anzeigen, aber die Abbrechen und Senden-Taste funktionieren nicht, ich weiß nicht, wo ich falsch liege. Bitte helfen Sie mir. Hier ist mein Code.Kann die E-Mail-Composer-Ansicht im iPhone nicht ausgeblendet werden?

- (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]; 

} 

Antwort

1

Sie präsentieren den Mail-Composer zweimal.

Entfernen Sie die Zeile:

[self.view addSubview:picker.view]; 

und ersetzen Sie die nächste Zeile mit:

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

Entschuldigung, jetzt kann ich die Ansicht des Mail-Composers nicht sehen. – Warrior

+0

Ich möchte die Tab-Leiste in der Mail-Composer-Ansicht sichtbar machen – Warrior

0

Set Delegierter des MFMailComposeViewController

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

mailcomposer.mailComposeDelegate = self; 

und benutzen Sie diesen Delegatmethode

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

Mit diesem Code:

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

Wenn Sie nur Subview mailcomposser hinzufügen Sie es von self.view zu entfernen haben, In Ihrem Code Sie subview und präsentieren auch hinzufügen,

Wenn Sie verwenden nur [self.view addSubview:picker.view]; als Versuchen Sie, es zu entfernen.

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

} 

Ich bin noch empfehlen

[self.navigationController presentModalViewController:picker animated:YES]; für Gegenwart MFMailComposeViewController zu verwenden,

und verwenden [self dismissModalViewControllerAnimated:YES]; es zu schließen.

Verwandte Themen