前提・実現したいこと
こんにちは。
位置情報を使うアプリを製作中です。
位置情報取得の許可伺いをポップアップさせ、「許可」を押したら、自動でメッセージが表示されるようにしたいです。
アドバイス頂けますと、幸いです。
発生している問題・エラーメッセージ
位置情報取得「許可」を押した際、メッセージを表示させる処理が、呼ばれません。
該当のソースコード
import UIKit import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate { var locationManager = CLLocationManager() var status = CLLocationManager.authorizationStatus() @IBAction func button1(_ sender: Any) { switch status { case .notDetermined: locationManager.requestWhenInUseAuthorization() //位置情報取得許可伺いのポップアップは成功しました。 break default: break } } func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { var status = CLLocationManager.authorizationStatus() switch status { case .authorizedWhenInUse: label1.text = "メッセージ内容1" break default: label1.text = "メッセージ内容2" break } } //以下のbutton2は、後で押します。質問の主旨に関係があるかわかりませんが、念のため記載します。 @IBAction func button2(_ sender: Any) { locationManager.delegate = self locationManager.distanceFilter = 5 locationManager.startUpdatingLocation() } }
補足情報(FW/ツールのバージョンなど)
Xcode 10.2.1
CLLocationManager のインスタンスを生成して delegate を設定してますか?
hoshi-takanoriさん、コメントありがとうございます。はい、設定しているつもりです。質問のソースコード欄に、関係ないかと思って省略していた部分を追記したので、もし可能でしたら、ご確認いただけますと幸いです。(import、class、別のボタンbutton2)
追記されたコードを見ましたが、locationManager はどこで初期化してますか? また、button2 は「後で押します」ってことは、位置情報取得の許可が得られてから押される想定ということでしょうか?
hoshi-takanoriさん、返信ありがとうございます。locationManagerの初期化というのは、
func setupLocationManager() {
locationManager = CLLocationManager()
}
と、記載すること、という理解で合っておりますでしょうか?これは記載していません。この記載の存在を、今ネットで検索して、知りました。
はい、button2は、位置情報取得の許可が得られてから押される想定です。
回答1件
あなたの回答
tips
プレビュー