ios - 为什么 didUpdateLocations 没有运行,但我的 GPS 坐标仍在更新?

标签 ios xcode core-location

我正在尝试构建一个应用程序,它可以定期提供 GPS 坐标,以便显示在标签上并发送到网络服务器,但事实证明这很困难。我已经设法让它为我提供准确的实时 GPS 坐标,但我必须按下按钮才能刷新标签。

我认为 didUpdateLocation 方法目前是一个不错的地方,但它似乎永远不会运行。我正在通过包含 NSLog 帖子来测试这一点 - 当我使用 Apple 的 LocateMe 示例应用程序执行此操作时,它会按预期运行。

下面是我的方法:

- (void)locationManager:(CLLocationManager *)manager
        didUpdateToLocation:(CLLocation *)newLocation
        fromLocation:(CLLocation *)oldLocation
{
     theLocation = [NSString stringWithFormat:@"latitude: %f
        longitude: %f", locationManager.location.coordinate.latitude,
        locationManager.location.coordinate.longitude];

     NSLog(@"location manager did something!!!");
}

虽然我猜测问题出在上述方法之外。我想我应该包含我的 viewDidLoad 方法,因为这就是我开始更新位置的地方:

- (void)viewDidLoad
{
    [super viewDidLoad];
    locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
    [outletLabelData setText:(@"Loaded")];
}

我还尝试过在按钮操作方法中使用 startUpdatingLocation,甚至让它像开关一样工作,用于启动和停止更新(这应该触发更新事件),但仍然没有成功。

其他详细信息:

  • Xcode 4.4
  • iOS 5.1
  • 在插入 Mac 的情况下在 iPhone 上测试应用

有人可以帮忙吗?

最佳答案

您需要告诉您的CCLocationManager谁是委托(delegate)人。在您的情况下,它是您当前的 Controller 。

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];

并且显然要确保您的 Controller 符合 CLLocationManagerDelegate 协议(protocol)。

关于ios - 为什么 didUpdateLocations 没有运行,但我的 GPS 坐标仍在更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898765/

相关文章:

objective-c - 设置一个在 IOS 应用程序的生命周期内运行的计时器

iphone - 如何在 Xcode 中将 iPhone 的屏幕放到 mac 上

iphone - 为 iPhone SDK 编译 ffmpeg(未找到符号 - 链接器)

iphone - 像指南针应用程序一样的自定义指南针校准 View

ios - ViewController 嵌入为 UITabBarController 时如何向导航栏添加按钮

ios - 另一个 UIAlertView 中的 UIAlertView 会阻止整个应用程序中的键盘输入

iphone - .ipa启动时的应用入口和调用顺序

c++ - 如何修复 "type_info' s 具有隐藏的可见性。他们都应该有公众可见度。”?

iphone - 将 GPS 集成到我的应用程序中

ios - 仅显示一个位置权限警报