Objective c CLLocationManager没有';从其他VC返回时不会被调用

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

当我从另一个视图控制器返回视图时,不会调用CLLocationManager委托。但是,如果视图控制器加载而不显示另一个视图控制器,则它可以非常好地工作

例如,每次调用defaults.objectForKey(“firstTimeUser”)==nil{,并且该视图控制器被解除,则不会调用CLLocationManager委托

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将不会重新运行。