2
我正在嘗試設置一個登錄狀態,在該位置我要求用戶提供一些權限,包括:位置,通知和相機。我有3個不同的視圖控制器設置,每個要求其中一個權限並解釋原因。在每個視圖控制器上,我在底部有一個按鈕,其中顯示「授予權限」。如何在授予位置權限後執行任務ios
當用戶點擊按鈕我想要彈出權限對話框,並且一旦用戶點擊允許,我想轉換到下一個視圖控制器。
這是我現在所擁有的:
class OnboardingStep2:UIViewController{
override func viewDidLoad() {
self.view.backgroundColor = StyleKit.orangeWhite()
}
@IBAction func getPermission(sender: AnyObject) {
dispatch_sync(dispatch_get_main_queue()) {
let locManager = CLLocationManager()
locManager.requestAlwaysAuthorization()
}
if (CLLocationManager.authorizationStatus() == CLAuthorizationStatus.Authorized) {
self.performSegueWithIdentifier("goToStep3", sender: self)
}
}
}
我一直在使用派遣排隊的任務,但使用異步許可對話彈出,然後立即關閉它,因爲授權檢查是在企圖運行(我假設)。使用dispatch_sync,對話從不顯示。
要做到這一點,最好的方法是什麼?我想先允許對話彈出,一旦用戶點擊允許我想繼續。
我更新的代碼包括第e委託,但每當我點擊提示用戶許可的按鈕時,彈出權限對話框,然後在一秒之內消失,然後我甚至可以點擊允許。你知道這個的原因嗎? –
是的,你的位置管理器對象超出了範圍(它被清除,因爲它只存在於函數中)。將您的位置管理器設置爲實例變量,然後重試。 – CodeBender