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];

何らかの奇妙な理由で、混乱している 4 番目のオブジェクトが常に存在し、複製されているか、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;
}

string を[[_tableArray objectAtIndex:2] objectAtIndex:indexPath.row]ログに記録しましたが、正しい文字列がログに記録されます。

4

2 に答える 2

1

削除するcell.tag = indexPath.row;

セルを再利用して割り当てているため、tag混乱します。たとえば、2番目の行に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 に答える