使用从NSURLConnection检索的数据填充UITableView

时间:2014-05-18 11:09:59

标签: ios objective-c uitableview nsurlconnection

基本上我有一个主屏幕,上面有一个按钮,当你点击那个按钮时,我想从服务器加载一个用户列表,并在桌面视图的下一个屏幕上显示它们。

我可以毫无问题地获取数据,并将其传递给我的tableview而没有任何问题 - 我的问题在于在收到数据后将数据加载到单元格中!

流程如下:

  • 点按按钮
  • 启动NSURLConnection
  • 在屏幕上打开UITableView
  • 什么都不载
  • 数据返回,添加到NSArray
  • Tableview Reload
  • 在viewWillAppear中 - 让本地用户NSArray等于收到数据

什么都没有加载。

如果我然后再按,然后再次按下按钮,我的所有单元格都会填充之前收到的数据。

提前感谢您的帮助。我现在一直在寻找一下:(

修改

从主屏幕移动到桌面视图时 注意:getUsers设置NSURLConnection并启动连接

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"selectUser"]) {
        DDNetworkRequest *networkRequest = [[DDNetworkRequest alloc] init];
        [networkRequest getUsers];
    }
}

Tableview类:
注意:returnUserList只返回在网络类

中设置为变量的数据数组
-(void)viewWillAppear:(BOOL)animated{
    DDNetworkRequest *networkRequest = [[DDNetworkRequest alloc] init];
    users = [networkRequest returnUserList];
}

网络课程:
注意:returnUsers操作然后保存NSArray变量

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

    NSDictionary *jsonDictionary;
    jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
       [usersJSONDict isEqualToDictionary: jsonDictionary];
       [self returnUsers:jsonDictionary];

       DDUserMessage *userMessageTable = [[DDUserMessage alloc] init];
       [userMessageTable.tableView reloadData];

}

** Edit2 ** returnUser方法

-(void) returnUsers:(NSDictionary*)userDict{
    userListArray = [userDict valueForKey:@"username"];
}

2 个答案:

答案 0 :(得分:1)

如果您没有提供任何代码,我猜您忘记了HTTP get请求成功阻止中的这个非常棒的操作:

[self.tableView loadData];
我是对的吗? ;)

答案 1 :(得分:1)

收到数据后,必须将其传递给数据源数组,然后调用

[self.tableView reloadData];

还要确保从主线程中调用此行。您无法从其他线程更改UI。