隐藏 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)
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)