【发布时间】:2012-04-16 03:12:51
【问题描述】:
我有 UINavigationController/UITabBarController 基础应用程序,一切正常,但 MFMailComposeViewController 让我发疯。我几乎浏览了所有关于 MFMailComposeViewController 的堆栈溢出帖子并尝试了它,但是当我试图从父视图中将其关闭时,它给了我 EXC-BAD-EXCESS。
这是我的 MFMailComposeViewController 代码。
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
UIAlertView *alert;
if (result == MFMailComposeResultFailed) {
alert = [[UIAlertView alloc] initWithTitle:@"Message Failed!" message:@"Your email has failed to send" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[alert show];
[alert release];
}
[self dismissModalViewControllerAnimated:YES];
//[controller dismissModalViewControllerAnimated:YES];
//[[self parentViewController]dismissModalViewControllerAnimated:YES];
}
我不知道我的错误在哪里,或者这个邮件编辑器有什么问题。请提供一些指导方针。
更多代码..这里我提供代码...
-(void)mailsender
{
NSUserDefaults *invoiceautogenerator = [NSUserDefaults standardUserDefaults];
NSString *invoicestring = [invoiceautogenerator objectForKey:@"invoice"];
NSString *MemoString = [[NSUserDefaults standardUserDefaults]valueForKey:@"SALEMEMODETAIL"];
NSString *PassUniqeNumer = [[NSUserDefaults standardUserDefaults]valueForKey:@"UNIQUREFKEYDATA"];
MFMailComposeViewController *mail1 = [[[MFMailComposeViewController alloc] init]autorelease];
mail1.mailComposeDelegate = self;
[self databaseOpen];
NSString *str = [NSString stringWithFormat:@"Select EmailID from tblMercuryDetail"];
NSLog(@"str:%@",str);
NSArray *Query = [[NSArray alloc]init];
Query = [database executeQuery:str];
NSLog(@"Array DataL%@",Query);
NSString *Emailid = [NSString stringWithFormat:@"%@",[Query valueForKey:@"EmailID"]] ;
NSLog(@"Emailid:%@",Emailid);
Emailid = [Emailid stringByReplacingOccurrencesOfString:@"(" withString:@""];
Emailid = [Emailid stringByReplacingOccurrencesOfString:@")" withString:@""];
Emailid = [Emailid stringByReplacingOccurrencesOfString:@"\"" withString:@""];
Emailid = [Emailid stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"Emailid:%@",Emailid);
[Query release];
[database close];
UIImage *savedimage = [self loadImage:invoicestring];
NSData *myData = UIImagePNGRepresentation(savedimage);
[mail1 addAttachmentData:myData mimeType:@"image/png" fileName:@"sign.png"];
if ([MFMailComposeViewController canSendMail]) {
//Setting up the Subject, recipients, and message body.
[mail1 setToRecipients:[NSArray arrayWithObjects:Emailid,nil]];
[mail1 setSubject:@"Receipt"];
[mail1 setMessageBody:@"Message of email" isHTML:NO];
NSString *emailBody;
[self databaseOpen];
NSString *str = [NSString stringWithFormat:@"Select * from tblGiftTransaction where InvoiceNo = '%@' ",invoicestring];
NSArray *Arraydata = [[NSArray alloc]init];
Arraydata = [database executeQuery:str];
NSString *PurchaseAmt = [NSString stringWithFormat:@"%@",[Arraydata valueForKey:@"PurchaseAmt"]];
NSString *TransactionType = [NSString stringWithFormat:@"%@",[Arraydata valueForKey:@"TransactionType"]];
NSLog(@"==%@",Arraydata);
emailBody = [NSString stringWithFormat:@
"<br>Memo: </br> " "%@"
"<br>Ref Number: </br> ""%@"
"<br>Invoice No: </br> ""%@"
"<br>Purchase Amount: </br> ""$%@"
"<br>Transaction Type: </br> ""%@"
,MemoString,PassUniqeNumer,invoicestring,PurchaseAmt,TransactionType
];
NSLog(@"%@",emailBody);
[mail1 setMessageBody:emailBody isHTML:YES];
[[self parentViewController] presentModalViewController:mail1 animated:YES];
[database close];
}
//[mail release];
}
谢谢。
【问题讨论】:
-
[controller dismissModalViewControllerAnimated:YES];应该可以工作 -
请提供更多代码详情。
-
@beryllium :我用过。但它不起作用...谢谢..
-
@Priyanka:在帖子中查看我的编辑...我添加了更多代码。
-
@Nit 替换这一行 [[self parentViewController] presentModalViewController:mail1 animated:YES]; by [self presentModalViewController:mail1 animated:YES];
标签: iphone ios xcode mfmailcomposeviewcontroller dismiss