基于indexPath.row启动UITableViewCells的问题

时间:2009-04-06 19:21:51

标签: iphone objective-c cocoa cocoa-touch

我有以下方法应该使用数组中的数据填充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;

}

这不按预期工作。该表最终只会填充我的数组的前三个元素,然后重复使用此数据,直到我的表结束。该表应该使用我的数组中的所有数据。知道为什么这不能按预期工作吗?

2 个答案:

答案 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 - 重复使用单元格,这样您只需创建与屏幕上显示的一样多的单元格。