0

UITableViewCell で行が選択されたときに 1 ~ 2 秒かかるアクションがあります。私が何かをしているセルをユーザーが選択したときに、ユーザーにフィードバックを提供したいと考えています。現在、tableviewcell のハイライトのみが表示されます。ビューに UIActivityIndi​​catorView を追加しました。デフォルトで非表示にしています。私は didSelectRowAtIndexPath でこれをやろうとしています:

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

// do long task

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

このコードは、アクティビティ インジケーターを表示しません。を削除すると

activityIndicator.hidden = YES;

の中に

setCustomObject:(id)newObject

私の CustomCell クラスの場合、インジケーターが表示されます。ただ、静的です。セルをクリックするまで非表示にし、長いタスクの実行中にアニメーション化し、長いタスクが終了したらアニメーションを停止して再び非表示にします。何かご意見は?ありがとう!

4

2 に答える 2

3

メイン スレッドでアクティビティ インジケーターを更新してみてください

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];       
 });
于 2012-05-03T00:26:46.830 に答える
0

setCustomObject:(id)newObject メソッドで、非表示に設定する代わりに、これを試してください。

activityIndicator.hidesWhenStopped = YES;
[acitivtyIndicator stopAnimating];

次に、didSelectRowAtIndexPath メソッドで、「hidden」または非表示を設定するコードを削除し、[activityIndi​​cator startAnimating] または [activityIndi​​cator stopAnimating] を使用して、アニメーションと非表示かどうかの両方を制御します。

于 2012-05-03T00:23:02.000 に答える