SwiftUI在SwiftUI视图条件中使用CoreLocation授权状态

时间:2020-06-03 19:23:52

标签: swift swiftui core-location

CLLocationManager.authorizationStatus()返回当前的授权级别,并且可以在条件中使用。问题在于authorizationStatus()是一个仅在创建视图时才被调用一次的函数,而不会在更新授权状态时刷新。也可以使用didChangeAuthorizationStatus实现一个委托,该委托可以更新@State变量,但是然后在关闭并重新打开应用程序时,@ State将被重置,并且didChangeAuthorizationStatus不会被调用(如果之前已被授权)。有什么好的方法可以根据CLLocationManager授权状态显示视图?

if(CLLocationManager.authorizationStatus() == .notDetermined){
                Button(action: {self.locationmanager.requestWhenInUseAuthorization()}){
                    Text("Authorize Location").padding()
                }
            }
            else if(CLLocationManager.authorizationStatus() == .denied || CLLocationManager.authorizationStatus() == .restricted || CLLocationManager.authorizationStatus() == .authorizedWhenInUse){
                Text("Please enable always on location in settings and restart the app to use")
            }
            else{
                /*Show view */
            }

在上述情况下,无论状态是否更改,条件分支仅计算一次。

0 个答案:

没有答案