2017-06-01 73 views
0

我对编码非常陌生,对我来说很裸露。位置服务许可不断消失

我正在研究一个应用程序,该应用程序会在用户位置周围的地图上显示兴趣点。问题是,当应用程序加载时,权限对话框会立即消失,然后用户可以允许或拒绝权限。

我的代码如下所示:

override func viewDidLoad() { 
    super.viewDidLoad() 

    logo.animation = "zoomIn" 
    logo.duration = 1 
    logo.delay = 0.5 
    logo.animate() 

    formatView() 

    let locationManager = CLLocationManager() 
    let authStatus: CLAuthorizationStatus = CLLocationManager.authorizationStatus() 

    if authStatus == .notDetermined { 
     locationManager.requestWhenInUseAuthorization() 
    } 

    if authStatus == .denied || authStatus == .restricted { 
     showLocationServicesDeniedAlert() 
     return 
    } 
} 

但我不知道我做错了。我试着在这里看到类似问题的其他答案,但似乎有几个原因可能发生,我不知道我的问题是哪一个我正在撕裂毛发!

回答

0

尝试移动viewWillAppear中的代码,因为当视图控制器出现时需要调用requestWhenInUseAuthorization。你可以研究视图控制器生命周期here以了解更多关于它们的外观,负载和一切。

+0

这不应该成为问题,从'viewDidLoad'调用它时,我请求授权的作品就好了。 –

+0

@DávidPásztor你是对的,即使它也适用于我,但是从'viewDidLoad'(有时)调用许可警报似乎有问题,所以这可能是他面临的问题。 –

1

您正在将locationManager分配给viewDidLoad的局部变量,该变量在viewDidLoad完成时立即释放。相反,让您的locationManagerViewController属性:

var locationManager: CLLocationManager? 

override func viewDidLoad() { 
    ... 

    locationManager = CLLocationManager() 

    ... 
}