Objective-C位置标记文本



我是目标C开发的新手。

我正在尝试获得经度和纬度坐标并将其分配给标签。

但是,当我加载应用程序时,我的标签不会与坐标更新。

我敢肯定我在做一些非常基本的错误,但是任何帮助都将不胜感激!

.h:

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import "ViewController.h"
@interface StartCycleViewController : UIViewController <NSXMLParserDelegate, CLLocationManagerDelegate>
@property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;
@property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;
@property (nonatomic,strong) CLLocation *currentCycleLocation;
@property (nonatomic,strong) CLLocationManager *cycleLocation;
- (void) stopLocationManager;

@end

.m:

#import "StartCycleViewController.h"
@interface StartCycleViewController ()
@end
@implementation StartCycleViewController
@synthesize cycleLocation = _cycleLocation;
@synthesize currentCycleLocation = _currentCycleLocation;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    [self startCycleLocation];
    // Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - startCycleLocation
- (void)startCycleLocation{
    if (!_cycleLocation){
        _cycleLocation = [[CLLocationManager alloc]init];
        _cycleLocation.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
        _cycleLocation.distanceFilter = 10;
        _cycleLocation.delegate = self;
    }
    [_cycleLocation startUpdatingLocation];
}
-(void) cycleLocation:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
         fromLocation:(CLLocation *)oldLocation {
    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;
    if (currentLocation != nil) {
        self.longitudeLabel.text = [NSString stringWithFormat:@"%.8f",          currentLocation.coordinate.longitude];
        self.latitudeLabel.text = [NSString stringWithFormat:@"%.8f",   currentLocation.coordinate.latitude];
    }
}

- (void) locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    NSLog(@"%@",error);
    if ( [error code] != kCLErrorLocationUnknown ){
        [self stopLocationManager];
    }
}
- (void) stopLocationManager {
    [self.cycleLocation stopUpdatingLocation];
}
@end

我本来会作为评论,但我没有声誉。

您更新标签的生产线发生了什么?

self.longitudeLabel.text = [NSString stringWithFormat:@"%.8f",      c    currentLocation.coordinate.longitude];

为什么在那里孤独的c

编辑:所以我意识到此方法

-(void) cycleLocation:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

从未被打电话。挖掘后,我看到该方法应该是这样的:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

用那个替换旧的签名,它应该有效。

最新更新