我正在开发一个应用程序,它会在用户位置周围的地图上显示兴趣点。问题是,当应用程序加载时,权限对话框会在用户允许或拒绝权限之前立即消失。
我的代码如下所示:
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 :(得分:1)
您正在将locationManager
分配给viewDidLoad
的局部变量,该变量会在viewDidLoad
完成后立即释放。相反,请将locationManager
的属性设为ViewController
:
var locationManager: CLLocationManager?
override func viewDidLoad() {
...
locationManager = CLLocationManager()
...
}
答案 1 :(得分:0)
尝试移动viewWillAppear
中的代码,因为requestWhenInUseAuthorization
需要在视图控制器出现时调用。您可以研究视图控制器生命周期here,以了解有关其外观,加载和所有内容的更多信息。