我正在从一个UITableViewController
中调用MFMailComposeViewController
。问题是当我在邮件撰写窗口中选择取消或发送按钮时,委托方法没有被调用:
mailComposeController:(MFMailComposeViewController*)controllerdidFinishWithResult
这是表格视图类:
@implementation DetailsTableViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section==0 && indexPath.row==4) {
//SEND MAIL
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
if ([MFMailComposeViewController canSendMail]) {
[controller setSubject:[NSString stringWithFormat:@"Ref %@",[item objectForKey:@"reference"]]];
[controller setMessageBody:@" " isHTML:NO];
[controller setToRecipients:[NSArray arrayWithObject:[item objectForKey:@"email"]]];
[self presentModalViewController:controller animated:YES];
}
[controller release];
}
}
- (void)mailComposeController:(MFMailComposeViewController*)controllerdidFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
// NEVER REACHES THIS PLACE
[self dismissModalViewControllerAnimated:YES];
NSLog (@"mail finished");
}
应用程序没有崩溃。按下取消或发送按钮后,撰写窗口仍然停留在屏幕上,按钮被禁用。我可以按Home键退出应用程序。
我能够从TableView打开其他模态视图,但无法打开MailCompose。
MFMailComposeViewController
是UINavigationController
的子类。他们这样做是为了让你可以实现UINavigationControllerDelegate
方法。 - Mark Adams