我几天前开始使用Xcode而且我完全迷失了。我正在尝试运行找到here的GPS定位器应用。
基本上,应用程序使用NSLog打印任何更新的GPS信息,根据我的理解,打印到Xcode的控制台。但是,我想将这些信息打印到屏幕上。
这是CFAStartViewController.m中成功打印到屏幕的代码:
-(void)viewDidAppear:(BOOL)animated{
CFAAppDelegate *appDelegate=(CFAAppDelegate *)[UIApplication sharedApplication].delegate;
CLLocation *currentLocation=appDelegate.locationManager.location;
self.labelLocationInformation.text=[NSString stringWithFormat:@"latitude: %+.6f\nlongitude: %+.6f\naccuracy: %f",
currentLocation.coordinate.latitude,
currentLocation.coordinate.longitude,
currentLocation.horizontalAccuracy];
}
这是CFAAppDelegate.m中成功打印到控制台的代码:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
NSDate* eventDate = newLocation.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if (abs(howRecent) < 15.0)
{
//Location timestamp is within the last 15.0 seconds, let's use it!
if(newLocation.horizontalAccuracy<35.0){
//Location seems pretty accurate, let's use it!
NSLog(@"latitude %+.6f, longitude %+.6f\n",
newLocation.coordinate.latitude,
newLocation.coordinate.longitude);
NSLog(@"Horizontal Accuracy:%f", newLocation.horizontalAccuracy);
//Optional: turn off location services once we've gotten a good location
//[manager stopUpdatingLocation];
}
}
}
我尝试将对NSLog的调用更改为self.labelLocationInformation.text,其格式与CFAStartViewController类似,但似乎没有做任何事情。我已经阅读了Xcode的基本教程,但我觉得有一些知识缺乏(显然)整体上做什么。
如果您能做的最好的事情是发布一个帮助我解决这个问题的链接,那就太好了。
答案 0 :(得分:0)
我认为问题是由于范围问题 - didUpdateToLocation:
方法被发送到位置管理器委托,即您的应用委托代表,其范围内没有标签。尝试将位置管理器的委托更改为CFAStartViewController
,并将关联的位置管理器委托代码从App Delegate移至CFAStartViewController
。然后,当调用didUpdateToLocation:时,标签将在范围内。
答案 1 :(得分:0)
根据您对我的评论的澄清回复....如果您希望CFAAppDelegate中的数据显示在您的CFAStartViewController中,那么您需要将该数据发送到CFAStartViewController(或CFAStartViewController需要获取它)。发送它1)为CFAStartViewController提供故事板ID,例如&#34; CFAVC&#34;。 2)在CFAStartViewController中定义或公开属性以包含您的数据。 3)通过CFAAppDelegate中的以下内容实例化CFAStartViewController:
// in CFAStartViewController.h define property such as:
@property (strong, nonatomic) CLLocation *incomingLocation;
// in CFAAppDelegate.m
// get a pointer to your VC
CFAStartViewController *destinationVC = [self.storyboard instantiateViewControllerWithIdentifier:@"CFAVC"];
// set properties on VC
destinationVC.incomingLocation = newLocation;
// show CFAStartViewController (or use whatever method you are currently using)
[self.navigationController pushViewController:destinationVC animated:YES];