1

UITableViewが実行された後、1つのセルのテキストを更新する非同期プロセスがあります。

更新により、テキストと色が変更されます。

cell.textLabel.text = @"new text"; 
aCell.textLabel.textColor = [UIColor blackColor];

私が抱えている問題は、これらのものが呼び出されることですが、セルが実際に変更されるまでに数秒かかるようです。

私も呼んでも

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:cIndex] withRowAnimation:UITableViewRowAnimationMiddle];

アニメーションは同じ遅延で発生します。

セルの更新に時間がかかる理由を誰かが知っているか、または起こっていることをデバッグする方法について誰かが私に正しい方向を示すことができますか?他のコードは実行されておらず、アプリはそこに座っているだけなので、UIスレッドはビジーではありません。

4

1 に答える 1

3

非同期プロセスを使用しているときに、この方法でUIを更新してみてください

dispatch_async(dispatch_get_main_queue(), ^{
     [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:cIndex] withRowAnimation:UITableViewRowAnimationMiddle];
});

編集

GDCリファレンスによる

dispatch_asyncは、ディスパッチキューで非同期実行のブロックを送信し、すぐに戻ります。

したがって、上記のコードブロックは、UIを更新するために、非同期でメインキューですぐに実行されます。

于 2013-03-09T10:05:06.320 に答える