ios TableView reloadData

时间:2014-07-22 18:37:35

标签: ios objective-c

嘿我的tableView有问题。我通过NSURLSessionDataTask从服务器获取数据,当它完成后我重新加载表视图。但我只是在触摸显示屏后才看到数据。

这是代码。

    NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"GET";
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];


NSURLSessionDataTask * dataTast = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    if (error == nil) {
        tableViewArray = [NSJSONSerialization JSONObjectWithData:data options:1 error:nil];
        [self.tableView reloadData];
        [self.tableView setNeedsDisplay];
    }
}];

[dataTast resume];

我在Storyboard中设置了dataSource和委托。

这不可能吗?

1 个答案:

答案 0 :(得分:6)

[self.tableView reloadData];放在主线程上。所有用户界面必须在主线程上更新。由于tableview在调用[self.tableView reloadData];时没有重新加载。但是当你scrolltableView它获取更新的数据。在主线程上放置[self.tableView reloadData];

NSURLSessionDataTask * dataTast = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    if (error == nil) {
        tableViewArray = [NSJSONSerialization JSONObjectWithData:data options:1 error:nil];
     dispatch_async(dispatch_get_main_queue(), ^{

        [self.tableView reloadData];

     });
    }
}];

也无需致电[self.tableView setNeedsDisplay];