隐藏 Activity 指标不起作用

Hide Activity Indicator Does Not Work

activity指标启动,但在调用隐藏函数时不会停止。我试过将隐藏功能放在各个地方,但它仍然没有隐藏。

隐藏activity指标:Q0ViewController().hideActivityIndicator(self.view)

我正在使用此处找到的 swift 实用函数: https://github.com/erangaeb/dev-notes/blob/master/swift/ViewControllerUtils.swift

开始 activity 指标

override func viewDidLoad() {
    super.viewDidLoad()
    Q0ViewController().showActivityIndicator(self.view)
    self.locationManager.delegate = self //location manager start
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
    self.locationManager.requestWhenInUseAuthorization()
    self.locationManager.startUpdatingLocation()
}

查询后隐藏activity指标:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
    CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: { (placemarks, error) -> Void in
        if (error != nil) {
            println("Error:" + error.localizedDescription)
            //return
        }
        if placemarks.count > 0 {
            let pm = placemarks[0] as CLPlacemark
            self.displayLocationInfo(pm)
            currentLoc = manager.location
            currentLocGeoPoint = PFGeoPoint(location:currentLoc)
            var query = PFQuery(className:"test10000")
            query.whereKey("RestaurantLoc", nearGeoPoint:currentLocGeoPoint, withinMiles:100) //filter by miles
            query.limit = 1000 //limit number of results
            query.findObjectsInBackgroundWithBlock {
                (objects: [AnyObject]!, error: NSError!) -> Void in
                if objects != nil {
                    unfilteredRestaurantArray = objects
                    originalUnfilteredArray = objects
                    println(objects)
                } else {
                    println("error: \(error)")
                }
            Q0ViewController().hideActivityIndicator(self.view) //HIDE
            }
        } else {
            println("error: \(error)")
        }
    })
}

这不是主队列的问题,因为 dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), { ()->() in 没有解决问题。

看起来您每次都在创建 "Q0ViewController" 的新实例。

相反,我建议在您的 class:

上将初始实例保留为 属性
// As a variable on the class instance
let myViewController = Q0ViewController()

// Initially show the activity indicator
self.myViewController.showActivityIndicator(self.view)

// Hide the activity indicator
self.myViewController.hideActivityIndicator(self.view)

希望这对您有所帮助!

与约书亚的建议类似,只是替换为:

Q0ViewController().showActivityIndicator(self.view)
and
Q0ViewController().hideActivityIndicator(self.view)

收件人:

self.showActivityIndicator(self.view)
and
self.hideActivityIndicator(self.view)