0

在我的电子邮件作曲家中,我希望'cancelbuttonclicked' 的结果来关闭 MFMailComposerViewController。我可以在 switch 语句中实现还是需要单独的方法。另外,我希望发送按钮在关闭之前发送消息。

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
    switch (result) {
        case MFMailComposeResultSent:{
            UIAlertView *messageSent = [[UIAlertView alloc] initWithTitle:@"Message Sent" message:@"Your message has been sent" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [messageSent show];
        break;
        }
        case MFMailComposeResultSaved:{
            UIAlertView *messageComposeResultSaved = [[UIAlertView alloc] initWithTitle:@"Message Saved" message:@"Your message has been saved" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [messageComposeResultSaved show];
            break;
        }
        case MFMailComposeResultCancelled:{
            UIAlertView *messageComposeResultCancelled = [[UIAlertView alloc] initWithTitle:@"Message Cancelled" message:@"Your message has been cancelled" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [messageComposeResultCancelled show];
            break;}

        case MFMailComposeResultFailed:{
             UIAlertView *messageFailed = [[UIAlertView alloc]initWithTitle:@"Message Failed" message:@"Your message could not be sent" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [messageFailed show];
            break;
        }
    }
}
4

1 回答 1

1

您的代码应该可以正常工作。UIAlertView在内部使用没有限制switch。但是,为了让它不那么混乱,我建议像这样重写它:

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
    NSString *alertTitle = nil;
    NSString *alertMessage = nil;
    switch (result) {
        case MFMailComposeResultSent:{
            alertTitle = @"Message Sent";
            alertMessage = @"Your message has been sent";
        break;
        }
        case MFMailComposeResultSaved:{
            alertTitle = @"Message Saved";
            alertMessage = @"Your message has been saved";
            break;
        }
        case MFMailComposeResultCancelled:{
            alertTitle = @"Message Cancelled";
            alertMessage = @"Your message has been cancelled";
            break;}

        case MFMailComposeResultFailed:{
             alertTitle = @"Message Failed";
             alertMessage = @"Your message could not be sent";
            break;
        }
    }
    [[[UIAlertView alloc] initWithTitle:alertTitle 
                                message:alertMessage
                               delegate:self
                      cancelButtonTitle:@"OK"
                      otherButtonTitles:nil] show];
}

它可以让您避免多个initWithTitle....

但是还有另一个问题:UIAlertView不推荐使用的是 iOS 8。您应该UIAlertController改用。这个答案有一个UIAlertController使用示例。

于 2015-08-13T18:11:54.673 回答