代码之家  ›  专栏  ›  技术社区  ›  zpesk

基于indexPath.row启动UITableViewCells时出现问题

  •  0
  • zpesk  · 技术社区  · 15 年前

    我有以下方法可以用数组中的数据填充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 回复  |  直到 15 年前
        1
  •  3
  •   Don McCaughey    15 年前

    每次返回单元格时,无论是新的还是重用的,都需要设置正确的单元格数据。向下滚动时,表格顶部的单元格将被删除,并在表格底部重复使用。这就是为什么您看到前几个数据项重复出现的原因。

    - (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;
    }
    
        2
  •  0
  •   Kendall Helmstetter Gelner    15 年前

    当您从DequeueusBellWithIdentifier调用中获得CellComments时,需要再次调用LoadFullComments-单元被重用,因此创建的单元数将与屏幕上显示的数目相同。