我有以下方法应该使用数组中的数据填充UITableView的单元格。我想使用数据加载到的行作为索引从数组中获取数据。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cellComments=(FullCommentCell *)[tableView dequeueReusableCellWithIdentifier:FullCommentCell_ID];
if(cellComments==nil)
{
[[NSBundle mainBundle]loadNibNamed:@"FullCommentCell" owner:self options:nil];
NSLog([NSString stringWithFormat:@"%i",indexPath.row]);
[cellComments loadFullComments:[latestFMLComments objectAtIndex:indexPath.row]];
}
//cellComments.userInteractionEnabled=NO;
return cellComments;
}
这不按预期工作。该表最终只会填充我的数组的前三个元素,然后重复使用此数据,直到我的表结束。该表应该使用我的数组中的所有数据。知道为什么这不能按预期工作吗?
答案 0 :(得分:3)
每次返回单元格时都需要设置正确的单元格数据,无论是新单元还是重用单元格。向下滚动时,表格顶部的单元格将被删除并重新用于表格底部。这就是为什么你看到重复的前几个数据项。
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cellComments = (FullCommentCell *)[tableView dequeueReusableCellWithIdentifier:FullCommentCell_ID];
if (cellComments == nil) {
[[NSBundle mainBundle]loadNibNamed:@"FullCommentCell" owner:self options:nil];
// Do any one-time setup here, like adding subviews
}
// Set cell data for both new and reused cells here
[cellComments loadFullComments:[latestFMLComments objectAtIndex:indexPath.row]];
//cellComments.userInteractionEnabled=NO;
return cellComments;
}
答案 1 :(得分:0)
当您从dequeueReusableCellWithIdentifier调用中返回cellComments时,您需要再次调用loadFullCommnents - 重复使用单元格,这样您只需创建与屏幕上显示的一样多的单元格。