最近はSwiftをいろいろ触っています。
さてタイトルのとおり、
例えば、NSURLSessionを使って
サーバーから取得したデータをUITableViewの各セルに表示させようとして、
func hoge() { let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration()) let request = NSURLRequest(URL: NSURL("https://xxxx.example.com")) let task = session.dataTaskWithRequest(request, completionHandler: self.getData) task.resume() } func getData(data:NSData?, res:NSURLResponse?,error:NSError?) { // ここで取得したデータをゴニョニョして... // ↓reload()してんのに表示変わらん! self.tableView.reloadData() }
このような現象になっている場合。
安心してください。大丈夫です。
上記の例の場合、tableViewのreloadData()がメインスレッドから呼ばれていないことが原因なので、
reloadData()の呼び出しは
dispatch_async(dispatch_get_main_queue(), { self.tableView.reloadData() })
こうしてやればOKです。
以上でェェェえす。
0 件のコメント:
コメントを投稿