2012-05-03 23 views
0

UITableViewCellで行が選択されているときに、2〜3秒かかるアクションがあります。私が何かしているセルを選択したときにユーザーからのフィードバックを得たいと思っています。現在は、tableviewcellのハイライトが表示されています。私は私のビューにUIActivityIndi​​catorViewを追加しました。私はデフォルトで隠している。私は私のdidSelectRowAtIndexPathでこれをやろう:UITableViewCellのUIActivityIndi​​catorViewが選択項目に表示されない

{ 
CustomCell *cell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath]; 
      cell.activityIndicator.hidden = NO; 
      [cell.activityIndicator startAnimating]; 

// do long task 

      [cell.activityIndicator stopAnimating]; 
      cell.activityIndicator.hidden = YES; 
} 

このコードは私のactivityindicatorは表示されません。私は私のCustomCellクラスの

setCustomObject:(id)newObject 

activityIndicator.hidden = YES; 

を削除した場合、私は、インジケータが表示されません。それは静的だけど。セルをクリックして長いタスクが実行されている間にアニメーションを作成し、長いタスクが終了したときにアニメーションを停止して再び非表示にするまで、非表示にしたい何かご意見は?ありがとう! setCustomObjectで

+0

での活動の指標を更新してみますが、行の選択を解除されるか、行が強調表示さ滞在していますか? –

+0

@obuseme私はそれをいくつかの方法で試しました。 selectionStyleをnoneにしてみましたが、アニメーションの開始前にdeselectRowAtIndexPathを呼び出して試しました。どちらも動作しません。私はあなたの答えであなたが推奨したことをやろうとしましたが、それはどちらもうまくいかなかったのです。あなたの答えがダニエルビアードの答えと組み合わさって、そのようなメインスレッドでそれを行うと、私はそれも見ません。アニメーションの停止をコメントアウトして、アニメーションを開始するダニエルビードの答えをコメントすると、セル – Crystal

+0

@obusemeを持つビューにポップアップするとアクティビティインジケータが表示されますが、それは明らかに私が欲しいものではありません。それをアニメーション化してから、そのビューに戻るときにアニメーションを停止する必要があります。長いタスクは、表示する次のビューを設定することで、そのタスクのインジケータを表示したかったのです。 – Crystal

答えて

0

:(ID)でnewObject方法は、代わりに隠しに設定すると、この試してみてください。「隠された」かどうか設定するコードを削除し、didSelectRowAtIndexPath方法に続いて

activityIndicator.hidesWhenStopped = YES; 
[acitivtyIndicator stopAnimating]; 

を、とだけ[activityIndi​​cator startAnimating]または[activityIndi​​cator stopAnimating]を使用して、アニメーションと非表示かどうかを制御します。

2

は、メインスレッド

dispatch_async(dispatch_get_main_queue(), ^{ 
    cell.activityIndicator.hidden = NO; 
    [cell.activityIndicator startAnimating];  
}); 

//do long task 

dispatch_async(dispatch_get_main_queue(), ^{ 
    cell.activityIndicator.hidden = YES; 
    [cell.activityIndicator stopAnimating];  
}); 
+0

これは私のために働いたが、なぜこのような理由がわからない!!あなたは物語を説明できますか? – Atif

+0

Apple docs: "ほとんどの場合、UIKitクラスはアプリケーションのメインスレッドからのみ使用する必要があります。これは、UIResponderから派生したクラスや、アプリケーションのユーザーインターフェイスを操作するクラスに特に当てはまります。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKit_Framework/Introduction/Introduction.html – leolobato

関連する問題