基本上我有一个主屏幕,上面有一个按钮,当你点击那个按钮时,我想从服务器加载一个用户列表,并在桌面视图的下一个屏幕上显示它们。
我可以毫无问题地获取数据,并将其传递给我的tableview而没有任何问题 - 我的问题在于在收到数据后将数据加载到单元格中!
流程如下:
什么都没有加载。
如果我然后再按,然后再次按下按钮,我的所有单元格都会填充之前收到的数据。
提前感谢您的帮助。我现在一直在寻找一下:(
修改
从主屏幕移动到桌面视图时 注意: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"];
}
答案 0 :(得分:1)
如果您没有提供任何代码,我猜您忘记了HTTP get请求成功阻止中的这个非常棒的操作:
[self.tableView loadData];
我是对的吗? ;)
答案 1 :(得分:1)
收到数据后,必须将其传递给数据源数组,然后调用
[self.tableView reloadData];
还要确保从主线程中调用此行。您无法从其他线程更改UI。