2017-06-01 2 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 
    } 
} 

しかし、私は私が間違ってやっている見当がつかない。 Iveは、同様の問題について他の回答に従おうとしましたが、これが起こる理由がいくつかあり、私の問題がどれか分かりません。

答えて

0

viewWillAppearにコードを移動すると、表示コントローラが表示されたときにrequestWhenInUseAuthorizationを呼び出す必要があります。また、View Controller Lifecycle hereを調べて、外観、ローディングなどの詳細を知ることができます。

+0

だけで正常に動作します。 –

+0

@DávidPásztorあなたは正しいです、それでも私にとってはうまくいきますが、許可アラートは 'viewDidLoad'(時には)から呼び出されたときに問題を抱えているように見えます。 –

1

viewDidLoadが終了するとすぐに解放されるviewDidLoadのローカル変数にlocationManagerを割り当てています。その代わり、locationManagerあなたViewControllerの財産を作る: `viewDidLoad`からそれを呼び出すときに、私は許可を要求するため、問題にはなりません

var locationManager: CLLocationManager? 

override func viewDidLoad() { 
    ... 

    locationManager = CLLocationManager() 

    ... 
} 
関連する問題