如何在Xcode的控制台上将信息打印到屏幕上?

时间:2014-08-28 15:23:14

标签: ios xcode gps nslog

我几天前开始使用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的基本教程,但我觉得有一些知识缺乏(显然)整体上做什么。

如果您能做的最好的事情是发布一个帮助我解决这个问题的链接,那就太好了。

2 个答案:

答案 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];