2016-08-04 12 views
0

これは私のコードです。データを渡してデータをデータベースに追加するときにボタンをクリックすると、インジケーターが表示されます。どうすれば修正できますか?ローディングインジケータが正しく動作しない

@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() 
      }) 
     } 
    }) 
} 

答えて

0

あなた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. 

    }) 
} 
0

メインキューを遮断する。..

@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() 

    }) 
    }) 

} 
関連する問題