所以我最簡單的想法是創建一個應用程序,允許用戶通過電子郵件報告他們位置的緯度和經度座標。您點擊按鈕,電子郵件屏幕通過MessageUI框架出現,「收件人」,「主題」和「正文」字段已預先輸入,只需要用戶點擊「發送」即可。使用全局變量在類之間傳遞值
我的問題是,我需要將經緯度座標包含在電子郵件正文中。這些座標變量在 - (void)CLLocationManager函數中生成並轉換爲字符串,就像我需要的一樣。問題是,電子郵件是從另一個函數發送的, - (void)displayComposerSheet,並且我無法弄清楚如何將經緯度/長字符串放入要發送的電子郵件正文中。在通過Google衝擊我的方式之後,我遇到了全局變量的概念。這似乎是我需要實現的。很多消息來源都說「在應用代理中聲明你的變量,然後你就可以在代碼中的任何地方使用它們」,或者至少這就是我所說的。再次強調,我對這款遊戲相當陌生。所以,如果我要在delegate.m文件中創建我的緯度和經度字符串而不是項目.m文件,那麼我可以在閒暇時對它們進行調用,然後將它們發送給我電子郵件的正文。
我只是不完全在我所有的「東西」應該去的地方。這是我到目前爲止(完美的作品)。我只需要用CLLocationManager生成的ACTUAL值替換我的默認緯度值「12.3456」和經度值「78.9012」。任何幫助將不勝感激。謝謝!
//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:@"[email protected]"];
[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];
}
「在我敲開Google的道路之後,我遇到了全局變量的概念。 ......很多消息來源都說「在應用代理中聲明你的變量,然後你就可以在代碼中的任何地方使用它們」,或者至少這就是我所說的意思。「不,那不是什麼一個全局變量是 - 它只是訪問一個對象(應用程序,獲取它的委託)的屬性,然後訪問該對象的一個屬性。一個全局變量就是這樣的:一個在全局範圍內的變量(不受函數或方法的範圍限制,也不受實例變量的限制)。 –