Objective c CLLocationManager没有';从其他VC返回时不会被调用
当我从另一个视图控制器返回视图时,不会调用CLLocationManager委托。但是,如果视图控制器加载而不显示另一个视图控制器,则它可以非常好地工作 例如,每次调用defaults.objectForKey(“firstTimeUser”)==nil{,并且该视图控制器被解除,则不会调用CLLocationManager委托Objective c CLLocationManager没有';从其他VC返回时不会被调用,objective-c,swift,Objective C,Swift,当我从另一个视图控制器返回视图时,不会调用CLLocationManager委托。但是,如果视图控制器加载而不显示另一个视图控制器,则它可以非常好地工作 例如,每次调用defaults.objectForKey(“firstTimeUser”)==nil{,并且该视图控制器被解除,则不会调用CLLocationManager委托 override func viewDidAppear(animated: Bool) { super.viewDidAppear(true) let
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.objectForKey("firstTimeUser") == nil {
if let servicesController = self.storyboard?.instantiateViewControllerWithIdentifier("ServicesController") as? UITableViewController {
self.navigationController?.presentViewController(servicesController, animated: true, completion: nil)
}
defaults.setObject("set", forKey: "firstTimeUser")
defaults.synchronize()
} else {
getLocationData()
loadNewsData()
}
}
func getLocationData() {
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.distanceFilter = 3000
self.locationManager.delegate = self
self.locationManager.requestWhenInUseAuthorization()
}
我相信这与此有关。还尝试在主线程中设置LocationManager:
dispatch_async(dispatch_get_main_queue(), {
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.distanceFilter = 3000
self.locationManager.delegate = self
self.locationManager.requestWhenInUseAuthorization()
})
当
默认值.objectForKey(“firstTimeUser”)==nil
为true时,您不调用getLocationData
,因此委托从未设置。@michael更正,代码显示servicesController
,但当我关闭servicesController
并返回视图控制器时,getLocationData()
代理未被调用。因此,您知道当您关闭VC时,ViewDidDisplay
正在重新运行吗?例如,如果VC在iPad上显示为弹出框,则先前VC的ViewDidDisplay将不会重新运行。