Итак, моя простая идея - создать приложение, которое позволит пользователю сообщать координаты широты и долготы своего местоположения по электронной почте. Вы нажимаете кнопку, экран электронной почты открывается через среду MessageUI, поля «Кому», «Тема» и «Тело» уже предварительно введены, все, что нужно, - это нажать «отправить».
Моя проблема в том, что мне нужно, чтобы координаты широты и долготы были включены в тело письма. Эти координатные переменные создаются в функции - (void) CLLocationManager и превращаются в строки, как мне и нужно. Проблема в том, что электронное письмо отправляется из другой функции, - (void) displayComposerSheet, и я не могу понять, как вставить строки lat / long в тело письма, которое нужно отправить. Пролистав немного через Google, я наткнулся на идею глобальных переменных. Кажется, это то, что мне нужно реализовать. Многие источники говорят: «объявите свои переменные в делегате приложения, и тогда вы сможете использовать их везде, где есть в вашем коде», или, по крайней мере, я так понимаю. Еще раз подчеркну, что я довольно новичок в этой игре. Итак, кажется, что если бы я должен был создать свои строки широты и долготы в файле Delegate.m вместо файла .m проекта, то я смогу вызвать их на досуге и, предварительно, отправить их в мой тело письма.
Я просто не совсем туда, где все мои "вещи" должны идти. Вот что у меня так далеко (работает отлично). Мне просто нужно заменить значение широты по умолчанию "12.3456" и значение долготы "78.9012" с фактическими значениями, сгенерированными CLLocationManager. Любая помощь будет принята с благодарностью. Спасибо!
//Code that generates the Latitude and Longitude strings
//--------------------------------------------------------
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
//Breaks down the location into degrees, minutes, and seconds.
int degrees = newLocation.coordinate.latitude;
double decimal = fabs(newLocation.coordinate.latitude - degrees);
int minutes = decimal * 60;
double seconds = decimal * 3600 - minutes * 60;
NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
latitude.text = lat;
degrees = newLocation.coordinate.longitude;
decimal = fabs(newLocation.coordinate.longitude - degrees);
minutes = decimal * 60;
seconds = decimal * 3600 - minutes * 60;
NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
longitude.text = longt;
}
//Code that prepares the email for sending
//------------------------------------------
-(void)displayComposerSheet
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"New Location Report!"];
// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"pghapps2009@gmail.com"];
[picker setToRecipients:toRecipients];
// Fill out the email body text
NSString *message = @"user reported their location at:";
NSString *msgLat = @"12.3456";
NSString *msgLong = @"78.9012";
NSString *emailBody = [NSString stringWithFormat:@"%@\nLatitude = %@\nLongitude = %@", message, msgLat, msgLong];
[picker setMessageBody:emailBody isHTML:NO];
[self presentModalViewController:picker animated:YES];
[picker release];
}