在我的应用程序中,当我登录时,主屏幕将在我的主屏幕的ViewDidLoad方法中加载,然后检查位置服务是否打开。如果没有打开,则会出现错误屏幕。
以上功能正常工作但在用户立即进入其单元格设置后,打开位置服务并再次点击在后台运行的应用程序将加载主屏幕并隐藏错误屏幕。
if([CLLocationManager locationServicesEnabled]==YES)
{
NSLog(@"Location Services Enabled");
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusDenied)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"App Permission Denied"
message:@"To re-enable, please go to Settings and turn on Location Service for this app."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[LocationGuideview setHidden:NO];
}
}
所以请告诉我它是如何可能的??????????
答案 0 :(得分:1)
您可以尝试在applicationDidEnterForeGround中的应用程序delegate.m文件中添加上述代码,并在plist或用户默认值中维护一个标记,您可以在项目中访问该标记
您的代码将是这样的
- (void)applicationWillEnterForeground:(UIApplication *)application
{
//check for location service
if([CLLocationManager locationServicesEnabled]==YES)
{
NSLog(@"Location Services Enabled");
// store a value in plist or user default for further reading set it to YES or whatever you like
}else{
// Location services are not enabled set NO as flag value
}
}
然后在视图中的视图控制器内部显示加载或视图将显示您可以读取存储的值并执行您的操作。
如果您使用的是用户默认值,请使用同步方法。