我知道还有很多关于[indexPath row]和滚动的问题,但是有人可以帮助我理解为什么它返回奇怪的数字吗?我似乎无法弄清楚配置单元格的方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


    static NSString *CellIdentifier = @"ProfileIdentifier";

    NSUInteger row = [indexPath row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    if(cell == nil){
        //My custom xib file is named "ProfileCell.xib"
        [[NSBundle mainBundle] loadNibNamed:@"ProfileCell" owner:self options:nil];
                cell = profileCell;
        self.profileCell = nil;
    }
//name and info are both of type NSArray
    labelName.text = [name objectAtIndex:row];
    labelInfo.text = [info objectAtIndex:row];
    NSLog(@"Row: %d", row);

    return cell;
}

控制台在加载时返回此:

2012-08-26 09:09:10.966 Nav [8028:f803]行:0

2012-08-26 09:09:10.983 Nav [8028:f803]行:1

2012-08-26 09:09:10.986 Nav [8028:f803]行:2

2012-08-26 09:09:10.996 Nav [8028:f803]行:3

2012-08-26 09:09:10.999 Nav [8028:f803]行:4

2012-08-26 09:09:11.002 Nav [8028:f803]行:5

2012-08-26 09:09:11.004 Nav [8028:f803]行:6

2012-08-26 09:09:11.007 Nav [8028:f803]行:7

2012-08-26 09:09:11.010 Nav [8028:f803]行:8

2012-08-26 09:09:11.012 Nav [8028:f803]行:9

当我向下滚动到屏幕外的单元格时,它将返回以下内容:

2012-08-26 09:09:12.354 Nav [8028:f803]行:3

2012-08-26 09:09:12.404 Nav [8028:f803]行:2

2012-08-26 09:09:12.471 Nav [8028:f803]行:1

2012-08-26 09:09:12.622 Nav [8028:f803]行:0

每次用户滚动时,我的labelName.text和labelInfo.text都会更改。
但是,唯一受影响的单元是最底层的单元。如何保持第9个单元格的labelName与[indexPath row]一致?

最佳答案

没关系,我想到了一种解决方法:

我为每个标签设置了标签。然后像这样编辑代码:

//labelName.text = [name objectAtIndex:row];
//labelInffo.text = [info objectAtIndex:row];

替换为:
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = [name objectAtIndex:row];
label = (UILabel *)[cell viewWithTag:2];
label.text = [info objectAtIndex:row];

希望这对决定通过数组修改标签的人有所帮助:x

编辑:我不确定为什么设置标签起作用,但是我的原始方法仍然会更改标签。有人可以解释吗?

10-07 16:06
查看更多