self.tableView.reloadData()没有调用cellForRowAtIndexPath()Swift

时间:2015-07-29 19:26:42

标签: ios uitableview

在我的代码中:

let url = NSURL(string: "http://localhost:8080/files/")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "GET"
var task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
let array = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as! NSArray
files = []
for element in array {
    let dict = NSJSONSerialization.JSONObjectWithData((element as! String).dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, options: nil, error: nil) as! NSDictionary
    files.append(File(fileName: dict["name"] as! String, body: dict["body"] as! String))
}
self.tableView.reloadData()
self.myRefreshControl.endRefreshing()
})
task.resume()

self.tableView.reloadData()行不会调用cellForRowAtIndexPathself.TableView不是nil,当我退出并返回时,表视图会重新加载。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要从主线程调用reloadData。使用

dispatch_async(dispatch_get_main_queue()) {
    self.tableView.reloadData()
    self.myRefreshControl.endRefreshing()
}

在你调用reloadData和refreshControl的地方。