web-dev-qa-db-ja.com

UITableView reloadData()は表示されたセルを更新しません

私が持っています

class StationViewController : 
    UITableViewController, UITableViewDelegate, UITableViewDataSource {
  @IBOutlet var stationTableView: UITableView!

データソースのデータを更新するとき

stationTableView.reloadData()

これは画面にすぐには表示されません。スクロール、傾斜、または画面の再描画を強制するその他の操作を行うと、更新されたセルが表示されます。 UITableViewが更新を行ったことを確認するには、

println("\(stationTableView.visibleCells())")

予想されるセルを出力します。

残りのセットアップはUINavigationControllerであり、これには私のStationViewControllerが関係としてあります。 stationViewControllerのIBOutletは、ストーリーボードファイルのUITableViewに接続されています。

アップデートをすぐに表示するには、画面の「再描画」が必要なようです。それ、どうやったら出来るの?

14
Erik Henriksson

Artemのおかげで、メインスレッドでreloadData()を呼び出す必要があることがわかりました。これが私がそれを解決した方法です:

func refreshUI() {
    dispatch_async(dispatch_get_main_queue(),{
        self.stationTableView.reloadData()
    });
}
33
Erik Henriksson