iOSアプリでメールを送ろうとしています。
これは方法です:
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Reclutamento pompieri"];
// Set up the recipients.
NSArray *toRecipients = [NSArray arrayWithObjects:@"test@gmail.com",nil];
[picker setToRecipients:toRecipients];
testoMail = [NSMutableString stringWithFormat: @"This is a test"];
[picker setMessageBody:testoMail isHTML:YES]; //HTML!!!!!!
[self presentViewController:picker animated:YES completion:nil];
//*******************************************************************************************
// The mail compose view controller delegate method
- (void)mailComposeController:(MFMailComposeViewController *)controller //**ERROR STAYS HERE**
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
[self dismissModalViewControllerAnimated:YES]
;
しかし、デバッガーは「宣言されていない識別子を使用しました」mailComposerControllerと言います
意味がわかりません。手伝って頂けますか?
どうもありがとう
PS。ヘッダーは次のとおりです。
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
@interface Reclutamento : UIViewController <MFMailComposeViewControllerDelegate>
{
}
- (void)sendMail;
@end
完全な .h コードは
//
// Reclutamento.h
// Pompieri
//
// Created by Reda Bousbah on 15.01.13.
// Copyright (c) 2013 Reda Bousbah. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface Reclutamento : UIViewController <MFMailComposeViewControllerDelegate>
{
UITextField *nameTextField;
UITextField *surnameTextField;
UITextField *bornDateTextField;
UITextField *addressTextField;
UITextField *zipTextField;
UITextField *emailTextField;
MFMailComposeViewController *email;
}
@property (nonatomic, retain) MFMailComposeViewController *email;
@property(nonatomic,retain) IBOutlet UITextField *nameTextField;
@property(nonatomic,retain) IBOutlet UITextField *surnameTextField;
@property(nonatomic,retain) IBOutlet UITextField *bornDateTextField;
@property(nonatomic,retain) IBOutlet UITextField *addressTextField;
@property(nonatomic,retain) IBOutlet UITextField *zipTextField;
@property(nonatomic,retain) IBOutlet UITextField *emailTextField;
@property NSString *name;
@property NSString *surname;
@property NSString *bornDate;
@property NSString *address;
@property NSString *zipCode;
@property NSString *miaEmail;
- (IBAction)checkData:(id)sender;
- (IBAction)backgroundTap:(id)sender;
- (IBAction)doneButtonPressed:(id)sender;
- (void)sendMail;
@end
実装ファイルは
//
// Reclutamento.m
// Pompieri
//
// Created by Reda Bousbah on 15.01.13.
// Copyright (c) 2013 Reda Bousbah. All rights reserved.
//
#import "Reclutamento.h"
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface Reclutamento ()
@end
@implementation Reclutamento
@synthesize nameTextField, surnameTextField, bornDateTextField, addressTextField, zipTextField, emailTextField;
@synthesize name, surname, bornDate, address, zipCode, miaEmail;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
nameTextField.text = nil;
surnameTextField.text = nil;
bornDateTextField.text = nil;
addressTextField.text = nil;
zipTextField.text = nil;
emailTextField.text = nil;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
#pragma - getting info from the UI
//NSString *test = nil;
- (IBAction)checkData:(id)sender
{
/*
name = nameTextField.text;
surname = surnameTextField.text;
bornDate = bornDateTextField.text;
address = addressTextField.text;
zipCode = zipTextField.text;
email = emailTextField.text;
*/
//NSLog(@" Nome: %@ \n Cognome: %@ \n Data di nascita: %@ \n Indirizzo: %@ \n Zip: %@ \n email: %@ \n", name, surname, bornDate, address, zipCode, email);
unsigned int x,a = 0;
NSMutableString *messaggioErrore; //stringa variabile
messaggioErrore = [NSMutableString stringWithFormat: @""]; //le stringhe mutabili vanno inizializzate in questo modo!
for (x=0; x<6; x++)
{
switch (x) {
case 0:
if (nameTextField.text == nil) {
[messaggioErrore appendString:@"Nome, "];
a=1;
}
break;
case 1:
if (surnameTextField.text == nil)
{
[messaggioErrore appendString:@"Cognome, "];
a=1;
}
break;
case 2:
if (bornDateTextField.text == nil)
{
[messaggioErrore appendString:@"Data di nascita, "];
a=1;
}
break;
case 3:
if (addressTextField.text == nil)
{
[messaggioErrore appendString:@"Indirizzo, "];
a=1;
}
break;
case 4:
if (zipTextField.text == nil)
{
[messaggioErrore appendString:@"Zip Code, "];
a=1;
}
break;
case 5:
if (emailTextField.text == nil)
{
[messaggioErrore appendString:@"Email, "];
a=1;
}
break;
default:
break;
}
}
NSLog (@"Messaggio errore: %@", messaggioErrore);
if (a == 1) {
NSMutableString *popupErrore;
popupErrore = [NSMutableString stringWithFormat: @"Per inviare compilare i seguenti campi: "];
[popupErrore appendString:messaggioErrore]; //aggiungo i miei errori
[popupErrore appendString: @" grazie della comprensione."]; //
NSLog(@"%@", popupErrore);
UIAlertView *chiamataEffettuata = [[UIAlertView alloc]
initWithTitle:@"ATTENZIONE" //titolo del mio foglio
message:popupErrore
delegate:self
cancelButtonTitle:@"Ok, correggo" //bottone con cui si chiude il messaggio
otherButtonTitles:nil, nil];
[chiamataEffettuata show]; //istanza per mostrare effettivamente il messaggio
}
else
{
name = nameTextField.text;
surname = surnameTextField.text;
bornDate = bornDateTextField.text;
address = addressTextField.text;
zipCode = zipTextField.text;
email = emailTextField.text;
NSMutableString *datiUtente;
datiUtente = [NSMutableString stringWithFormat: @"<br><br> <b>Nome:</b> %@ <br> <b>Cognome:</b> %@ <br> <b>Data di nascita:</b> %@ <br> <b>Indirizzo:</b> %@ <br> <b>Zip:</b> %@ <br> <b>Email:</b> %@ <br>", name, surname, bornDate, address, zipCode, miaEmail];
NSLog(@"Dati utente: %@", datiUtente);
NSMutableString *testoMail;
testoMail = [NSMutableString stringWithFormat: @"Salve, questa mail è stata generata automaticamente dalla applicazione per iPhone ''<b>Pompieri Locarno</b>'' <br> i dati relativi all'utente sono: %@", datiUtente];
NSLog(@"%@", testoMail);
//MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Reclutamento pompieri"];
// Set up the recipients.
NSArray *toRecipients = [NSArray arrayWithObjects:@"youporn@gmail.com",nil];
//NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com",@"third@example.com", nil];
//NSArray *bccRecipients = [NSArray arrayWithObjects:@"four@example.com",nil];
[picker setToRecipients:toRecipients];
//[picker setCcRecipients:ccRecipients];
//[picker setBccRecipients:bccRecipients];
// Attach an image to the email.
//NSString *path = [[NSBundle mainBundle] pathForResource:@"ipodnano" ofType:@"png"];
//NSData *myData = [NSData dataWithContentsOfFile:path];
//[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"ipodnano"];
// Fill out the email body text.
//NSMutableString *emailBody;
testoMail = [NSMutableString stringWithFormat: @"%@", testoMail];
[picker setMessageBody:testoMail isHTML:YES]; //HTML!!!!!!
// Present the mail composition interface.
[self presentViewController:picker animated:YES completion:nil];
// The mail compose view controller delegate method
- (void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
[self dismissModalViewControllerAnimated:YES];
}
}
}
#pragma mark - Mandare email
/*
- (void)sendMail:(NSMutableString*)testoMail{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Reclutamento pompieri"];
// Set up the recipients.
NSArray *toRecipients = [NSArray arrayWithObjects:@"reda.bousbah@gmail.com",nil];
//NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com",@"third@example.com", nil];
//NSArray *bccRecipients = [NSArray arrayWithObjects:@"four@example.com",nil];
[picker setToRecipients:toRecipients];
//[picker setCcRecipients:ccRecipients];
//[picker setBccRecipients:bccRecipients];
// Attach an image to the email.
//NSString *path = [[NSBundle mainBundle] pathForResource:@"ipodnano" ofType:@"png"];
//NSData *myData = [NSData dataWithContentsOfFile:path];
//[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"ipodnano"];
// Fill out the email body text.
NSString *emailBody = @"It is raining in sunny California!";
[picker setMessageBody:emailBody isHTML:NO];
// Present the mail composition interface.
[self presentViewController:picker animated:YES completion:nil];
}
*/
#pragma mark - methods to control the keyboard
- (IBAction)backgroundTap:(id)sender //method for resign the keyboard when the background is tapped
{
[nameTextField resignFirstResponder];
[surnameTextField resignFirstResponder];
[bornDateTextField resignFirstResponder];
[addressTextField resignFirstResponder];
[zipTextField resignFirstResponder];
[emailTextField resignFirstResponder];
}
- (IBAction)doneButtonPressed:(id)sender
{
NSLog( @"done button pressed");
[sender resignFirstResponder];
}
@end