1

私は少し混乱していて、他に頼ることがあまりありません。サーバーからメッセージを取得し、UITableView のセルに入力する iOS アプリケーションがあります。特定のオブジェクトがサーバーから更新されるたびに、その更新によってセル アニメーションがトリガーされます。私たちの場合、ゲームのスコアの表があります。誰かがポイントを失うとセルが赤く点滅し、ポイントを獲得するとセルが緑に点滅します。シンプルなコンセプトはうまく機能し、ユーザーはフィードバックを気に入っています。彼らが気に入らないのは、スクロールすると、セルに関連付けられたランダムな色が表示され、そこに約 1 秒間留まる方法です。それは、細胞がリサイクルされている方法と関係があると思います。この問題に関して、セルの値が同じであることを確認したり、色を手動で白に設定したりするなど、さまざまなチェックを試みました。

全体として、ユーザーが UITableView をスクロールしているときではなく、セルが表示されているときにのみアニメーションを表示しようとしています。誰にもアドバイスやアイデアはありますか?

ありがとう

4

2 に答える 2

3

何が起こっている

テーブルビューはセルを再利用するため、再利用されるべきではないにもかかわらず、フラッシュされている再利用されたセルになってしまいます。

解決方法

preprareForReuse:カスタムテーブルビューセルまたはtableView:willDisplayCell:forRowAtIndexPath:デリゲートメソッド(ACBが述べたように)のいずれかで、再利用されたセルをデフォルトの状態に復元できます。

UIView アニメーションでアニメーションしているため、animated プロパティの値を変更するだけで、アニメーションをキャンセルしてデフォルトの状態に戻ります。

フラッシュ用のユーザー Core Animation がある場合

Core Animation を使用してアニメーションを作成した場合は、代わりにremoveAllAnimationsアニメーション レイヤーを呼び出します。(点滅するアニメーションの場合、おそらくレイヤーのプロパティを変更せず、代わりにアニメーションに自動反転を指示します。これは、アニメーションを削除すると色が元の値に戻ることを意味します。)

于 2012-10-13T15:02:43.613 に答える
0

willDisplayCell1 つのオプションは、アニメーションを削除し、デリゲート メソッドの色を既定の色にリセットすることです。それがうまくいかない場合はdequeueReusableCellWithIdentifier、次のように設定できます。

NSString *aCellIdentifier = [NSString stringWithFormat:@"%d",indexPath.row];
UITableViewCell *aCell = [tableView dequeueReusableCellWithIdentifier:aCellIdentifier];     

ただし、表示するデータが多い場合、メモリの問題が発生するため、これは問題になります。この場合、表のセルを再利用しないことに注意してください。

于 2012-10-09T19:40:46.243 に答える