这是我的代码。在传递数据和向数据库添加数据的过程中,当我单击按钮时,我想显示一个指示器。我怎么才能修复它?
@IBAction func addWishList(sender: AnyObject) {
     self.loading.startAnimating()
        addMovie(showMovie!) // Database add method.
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
        let controller : WishListViewController = segue.destinationViewController as! WishListViewController
        if segue.identifier == "segue" {
            controller.user = self.tmpUser //  data from Facebook to pass another controller
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.loading.stopAnimating()
            })
        }
    })
}发布于 2016-08-04 20:29:31
您的addMovie阻塞主队列。你需要一些延迟才能将它添加到下一次运行循环中。尝试使用:
@IBAction func addWishList(sender: AnyObject) {
    self.loading.startAnimating()
    //This will add to next main run loop.
    let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.0 * Double(NSEC_PER_SEC))) 
    dispatch_after(dispatchTime, dispatch_get_main_queue(), { 
            addMovie(showMovie!) // Database add method.
    })
}发布于 2016-08-04 20:28:54
就像下面这样..
   @IBAction func addWishList(sender: AnyObject) {
         self.loading.startAnimating()
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
            addMovie(showMovie!) // Database add method.
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
    self.loading.stopAnimating()
    })
    })
}https://stackoverflow.com/questions/38766808
复制相似问题