Я хочу отправить письмо, нажав кнопку в пользовательском UITableViewCell
, используя MFMailComposeViewController
.
Цените, если ответ находится в Objective-C.
Следующий код в вашем файле .h
#import <MessageUI/MFMailComposeViewController.h>
Дайте делегата <MFMailComposeViewControllerDelegate>
Следующий код в вашем файле .m
//Where you want to open dialog write below code
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *mailCont = [[MFMailComposeViewController alloc] init];
mailCont.mailComposeDelegate = self; // Required to invoke mailComposeController when send
[mailCont setSubject:@"Your Subject!"];
[mailCont setToRecipients:[NSArray arrayWithObject:@"[email protected]"]];
[mailCont setMessageBody:@"Your Body" isHTML:NO];
[self presentViewController:mailCont animated:YES completion:nil];
}
//Delegate Method
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result)
{
case MFMailComposeResultCancelled:
//YOUR ACTION
break;
case MFMailComposeResultSent:
//YOUR ACTION
break;
case MFMailComposeResultSaved:
//YOUR ACTION
break;
case MFMailComposeResultFailed:
//YOUR ACTION
break;
default:
break;
}
}
Вы можете закрыть просмотр по этому коду - [self dismissViewControllerAnimated:YES completion:nil];
Убедитесь, что вы тестируете его на реальном устройстве, а не в симуляторе, и на вашем устройстве настроен почтовый идентификатор.
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface ViewController ()<MFMailComposeViewControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)sendmail:(id)sender {
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:@"Subject"];
NSArray *toRecipients = [NSArray arrayWithObjects:@"Recipients", nil];
[mailer setToRecipients:toRecipients];
NSString *emailBody = @"Body";
[mailer setMessageBody:emailBody isHTML:NO];
[self presentViewController:mailer animated:YES completion:nil];
}
}
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
// Close the Mail Interface
[self dismissViewControllerAnimated:NO completion:NULL];
}
Представьте контроллер в keywindow. Замените self для представления и закрытия на [[[UIApplication sharedApplication] keyWindow] rootViewController].
Если это соответствует вашему требованию. Пожалуйста, примите ответ. Спасибо
На самом деле это не соответствует моему, потому что я спросил об этом в контексте его реализации из пользовательского класса tableviewcell.
[self presentViewController: анимация почтовой программы: ДА, завершение: ноль]; не будет работать, если вызвать это из пользовательской ячейки uitableview. Как это сделать? @manishshharma93