UITableViewの表示がおかしい時、確認すること

UITableViewは速度の関係でセルの再利用を行っていたりセル再描画のタイミングを指示する必要があったりと、描画に関して気を配る必要があります。

もし、UITableViewが期待通りの表示内容になってくれないときは、次の事柄を確認するとよいかもしれません。

(1) きちんと再描画処理をしているか

UITableViewは、裏側のデータを書き換えただけでは更新が反映されません。更新を反映するには、たとえばUITableView#reloadDataを呼ぶなど、再描画を促すための処理が必要になります。 更新処理のあとに、これが呼ばれているか確認してください。

(2) セル内容の更新が非同期になされていないか

UITableViewは通常、dequeueReusableCellWithIdentifierなどを用いてセルを再利用します。そのため、非同期にセルを更新しようとすると、その非同期処理が更新しようとしているセルはもはや別のデータを格納するためのセルとして再利用されている、なんてことがありえます。

そのため、非同期処理によってテーブルのセルを更新する場合には、(a)更新対象のセルが更新すべきセルか確認する処理を設ける, または, (b)再利用された時点でその非同期処理をキャンセルする仕組みを設ける、などの対応が必要です。

追記(2015/10/22)

追加となる記事を作成しました。

参考