IOS中的位置服务,提示

IOS中的位置服务,提示,ios,objective-c,core-location,cllocationmanager,Ios,Objective C,Core Location,Cllocationmanager,我的应用程序需要位置服务才能工作,因此当应用程序第一次运行时,用户会被问到这个问题。 如果用户说“OK”,那么它将在不开机的情况下运行整个应用程序,因为它将继续工作。因此,第一次运行时,它实际上不会给视图控制器带来任何东西 当我第二次按XCODE中的go按钮时,它工作正常,因为用户已经授权使用定位服务来获取lat/long 以前有人有过这个问题吗?有什么建议吗 在您的视图中加载: locationManager = [[CLLocationManager alloc] init]; [locat

我的应用程序需要位置服务才能工作,因此当应用程序第一次运行时,用户会被问到这个问题。 如果用户说“OK”,那么它将在不开机的情况下运行整个应用程序,因为它将继续工作。因此,第一次运行时,它实际上不会给视图控制器带来任何东西

当我第二次按XCODE中的go按钮时,它工作正常,因为用户已经授权使用定位服务来获取lat/long


以前有人有过这个问题吗?有什么建议吗

在您的
视图中加载:

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];

您需要做的是,在“didUpdateLocation”调用之后更新视图,并调用“SetNeedsDisplay”,这样视图就会自动绘制以进行更新。 像这样:

如果在位置更新中添加活动指示器,效果会更好

现在,如果您从“AppDelegate”类调用它,您可以使用“NSNotificationCenter”将消息发送到视图,更新标签或视图,或者您需要的任何内容,如:

#pragma mark - locationManager:
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{

    [[NSNotificationCenter defaultCenter] postNotificationName:@"UpdatedLocation" object:nil userInfo:dictionary];


} 
在UIVIewController ViewDidLoad上,使用此用户注册到通知:

 //Adding self to notification Center:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateView:) name:@"UpdatedLocation" object:nil];

希望这有帮助

那么问题出在哪里呢?问题是它第一次运行时,它没有将信息带入视图控制器,它是空白的。第二次很好!您是否已在应用程序中启用位置更新?在设备中的位置服务设置下进行检查是的,我有,因为您会收到授权位置服务的提示。因此,第一次,它会提示允许loc服务,然后您按OK,然后应用程序在不打开它的情况下运行,我想这更多地与应用程序流有关。是的,这是viewdidload中的第一件事,然后它转到事件didUpdateLocation,该事件接收lat.long并转到db。但是,当你第一次安装应用程序时,会出现请求授权的提示,但它会在屏幕上出现此提示之前执行操作。在tableview和label提供正确数据之前,我必须至少运行应用程序两次。因此,你是说,在用户单击location services提示符上的“OK”按钮之前,应用程序正在获取坐标。不,我不是,提示符会出现,并转到代理didUpdateLocation,这很好!但是其他依赖于didUpdateLocation数据的东西以前运行过,这会把事情搞砸。你第二次运行它时,它工作了,因为它已经得到了你的批准。所以你现在看到的,我无法理解你的问题。
 //Adding self to notification Center:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateView:) name:@"UpdatedLocation" object:nil];