2016-11-03 25 views
0

によってブロックされ、ボタンをタップしたときにそれをアニメーション化された、しかし、それはすべての時間をアニメーションされるが、それは見ることができない、ここに私のコードだ:アクティビティインジケータ私はボタンの活動の指標を追加したボタン

DispatchQueue.global(qos: .userInitiated).async { 
     self.openCircle(withCenter: sender.center, dataSource: self.calculator!.iterateWPItems()){} 
     DispatchQueue.main.sync { 
      self.activityIndicator.stopAnimating() 
     } 
    } 
    activityIndicator.startAnimating() 
+0

皮を使用して

self.activityIndicator.startAnimating() print(activityIndicator.isAnimating) openCircle(withCenter: sender.center, dataSource: calculator!.iterateWPItems()){ dispatch_async(dispatch_get_main_queue()) { activityIndicator.stopAnimating(); } } 
スウィフト3については

self.activityIndicator.startAnimating() print(activityIndicator.isAnimating) openCircle(withCenter: sender.center, dataSource: calculator!.iterateWPItems()){ DispatchQueue.main.async { self.activityIndicator.stopAnimating() } } 

とメインキューに行うには、一度 –

+0

試みをチェックし、あなたがフェッチされています同じボタンアクションからのもの – Vinodh

+0

@ Anbu.Karthikいいえまだ表示されません –

答えて

0

だけスウィフト3 dispatch_after

 self.activityIndicator.startAnimating() 
    print(activityIndicator.isAnimating) 

    openCircle(withCenter: sender.center, dataSource: calculator!.iterateWPItems()){ 

// place webservice data processing here 
     dispatch_async(dispatch_get_main_queue()) { 
       activityIndicator.stopAnimating(); 
     } 
    } 

を使用する必要がcompletion handler .NOでこれを書く:

self.activityIndicator.startAnimating() 
    print(activityIndicator.isAnimating) 

    openCircle(withCenter: sender.center, dataSource: calculator!.iterateWPItems()){ 
// place webservice data processing here 

     DispatchQueue.main.async { 
      self.activityIndicator.stopAnimating() 

     } 
    } 
+0

非同期呼び出しの後に –

+0

が動作しません。非同期呼び出しでデータを取得します。非同期呼び出しが非常に高速に実行される可能性があります。そのため、アニメーションを見ることができません。アニメーションを確認するためにいくつかの遅延を追加します。上記は一例です。 – Vinodh

0

あなたのopenCircleメソッドは非同期メソッドであると仮定します。私はあなたのメソッドからコールバックを受け取ったときにあなたの活動インジケーターを停止することになっていると思います。この変更されたコードを試してください。この `activityIndi​​cator.stopAnimating()` NSOperation、

self.activityIndicator.startAnimating() 
print(activityIndicator.isAnimating) 

openCircle(withCenter: sender.center, dataSource: calculator!.iterateWPItems()){ 
    OperationQueue.main.addOperation { 
     self.activityIndicator.stopAnimating() 
    } 
} 
+0

NSOperationは動作しません –

+0

動作しません。あなたは 'openCircle'を非同期メソッドにすることになっています。それはかなり簡単です。 'dispatch_async'の中にコードを挿入する必要があります – KrishnaCA

関連する問題