簡體   English   中英

當我回到App時如何閱讀設置包?

[英]How to read settings bundle when I go back to App?

我在設置包中創建了“ updateheading”

如果用戶離開應用程序,請轉到設置以更改值,當用戶返回應用程序時,locationManager應基於更新后的值啟動/停止。

但是該應用程序無法運行viewWillAppear。 如何讀取更新值?

private let locationManager : CLLocationManager = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()

    locationManager.requestWhenInUseAuthorization()
    locationManager.delegate = self
}
override func viewWillAppear(_ animated: Bool) {

    let userDefault = UserDefaults.standard
    let updateheading = userDefault.object(forKey: "updateheading") as! Bool
    if(updateheading){
        locationManager.startUpdatingHeading()
    }else{
        locationManager.stopUpdatingHeading()
    }
}

View Controller對應用程序狀態不響應。 這是AppDelegate的責任。 但是您可以訂閱通知。

var observer: Any?

override func viewWillAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    observer = NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationDidBecomeActive, object: nil, queue: .main) { (_) in
        doUpdate()
    }
    doUpdate()
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    observber = nil
}

doUpdate是您當前的代碼。

PS: “如果重寫viewWillAppear,則必須在實現中的某個時刻調用super。” (c)蘋果文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM