Rod*_*Rod 51 cocoa-touch objective-c ios mfmailcomposeviewcontroller
我打电话MFMailComposeViewController给UITableViewController.问题是当我在"邮件撰写"窗口中选择" 取消"或" 发送"按钮时,从不调用委托方法:
mailComposeController:(MFMailComposeViewController*)controllerdidFinishWithResult
Run Code Online (Sandbox Code Playgroud)
这是表视图类:
@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");
}
Run Code Online (Sandbox Code Playgroud)
应用程序不会崩溃.按下"取消"或"发送"按钮后,"构建窗口"将停留在屏幕上并禁用按钮.我可以按Home键退出应用程序.
我可以打开TableView的其他模态视图,但不能打开MailCompose.
mxg*_*mxg 218
确保你使用
controller.mailComposeDelegate = self;
Run Code Online (Sandbox Code Playgroud)
并不是
controller.delegate = self;
Run Code Online (Sandbox Code Playgroud)
小智 14
您的方法签名不正确:
- (void)mailComposeController:(MFMailComposeViewController*)controllerdidFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
Run Code Online (Sandbox Code Playgroud)
应该:
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19281 次 |
| 最近记录: |