0

我得到了我的数组的副本,并且在这种方法中错误地显示了单元格:

在这里,我正在初始化数组,并将其添加到 tableView:

NSArray *sectionsArray = [NSArray arrayWithObjects: @"Location", @"Front Post", @"Front Fixing", @"Front Footplate", @"Rear Post", @"Read Fixing", @"Rear Footplate", @"Horizontal Bracing", @"Diagonal Bracing", @"Front Beam", @"Front Lock", @"Rear Beam", @"Rear Lock", @"Guard", @"Accessories", @"Comments", @"Off load ref", @"Loc Empty", @"Loc Affected", nil];
[_tableArray setObject:sectionsArray atIndexedSubscript:2];
[_tableView reloadData];

由于某些奇怪的原因,总是有第四个对象被搞砸了,要么是重复的,要么没有来自 IB 的视图。这是 cellForRowAtIndexPath: 方法:

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell;
    if (indexPath.section == 2) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"EntryCell"];
        cell.tag = indexPath.row;
        UILabel *label = (UILabel *)[cell viewWithTag:3];
        [label setText:[[_tableArray objectAtIndex:2] objectAtIndex:indexPath.row]];
    }
return cell;
}

我已经记录了字符串[[_tableArray objectAtIndex:2] objectAtIndex:indexPath.row],它记录了正确的字符串。

4

2 回答 2

1

消除cell.tag = indexPath.row;

因为您正在重用单元格并分配tag将混淆它。例如,对于第二行,您分配 tag = 2,然后当您向下滚动时,您将 tag = 6 分配给同一行。

于 2012-10-22T22:57:56.007 回答
0

添加这些行:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

}
else
{

 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
于 2012-10-23T05:19:28.620 回答