一切正常但是,它只显示前两行的两个数据,但它实际上有10行数据。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(fullData==nil){
return 2;
}else{
return [fulldata count];
}
}
但是当我向上滚动表格视图时,它会更新tableview单元格,其余的值像所有(10行数据)。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableCell";
SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
return cell;
}
NSDictionary *items=nil;
NSArray *title;
NSArray *image;
for(int i=0;i<[fullData count];i++){
items=[fullData objectAtIndex:i];
title=[items objectForKey:@"name"];
[name addObject:title];
title = [items objectForKey:@“time”];
[time addObject:title];
title = [items objectForKey:@“life_result”];
[life_result addObject:title];
image=[items objectForKey:@“achievments”];
[achievments addObject:image];
}
dispatch_async(dispatch_get_main_queue(), ^{
cell.nameLabel.text=[name objectAtIndex:indexPath.row];
cell.segment_name.text=[time objectAtIndex:indexPath.row];
cell.prepTimeLabel.text=[life_result objectAtIndex:indexPath.row];
//For Image
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[achievments objectAtIndex:indexPath.row]]];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if (data) {
cell.thumbnailImageView.image = [UIImage imageWithData:data];
}
}];
[cell setNeedsDisplay];
});
return cell;
}
我想解决这个问题并希望显示完整的行数据,任何人都可以建议我开展工作的方式。
提前致谢。
答案 0 :(得分:1)
在分配值之前返回单元格。一旦函数命中return语句,函数就会停止执行。在return cell;
条件内移除if
。
答案 1 :(得分:0)
你必须在这里做很多考虑。
您必须了解,只要任何未显示的单元格变得可见,就会调用UITableView的委托和数据源方法。这意味着,当您的应用程序中的某个时刻 fulldata 将被初始化时,它将返回它的计数。这可能就是为什么所有单元格(而不是2)都会在某个时刻显示出来的原因。
在这些行中设置一些断点,并测试当fulldata不再为零时。
另外,正如kaar3k指出的那样,你正在返回一个单元格,其中没有单元格可以出列(阅读:开头)。 另外,我建议删除GC调度调用,你很可能已经在主线程中了。
在cellForRow中异步设置图像也是一个坏主意......