0

テーブルビューに 9 行あり、ボタンを行 1 と 2 だけに追加したいと考えています。コードを初めて実行すると、1 と 2 にボタンが表示されます。しかし、テーブルビューをスクロールすると、行 4,5 がランダムに表示され始めます。 、8、9。コードは以下です。私が間違っていることをアドバイスしてください。

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView
                         dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]
            initWithStyle:UITableViewCellStyleDefault
            reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = [NSString stringWithFormat:@"Row %d",[indexPath row]];            
    if([indexPath row] == 0 || [indexPath row] == 1)
    {
        cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    }
    return cell;
}
4

1 に答える 1

3

これはよくある間違いです。一部のセルだけに何かが必要な場合は、他のセルの値をリセットする必要があります。

if([indexPath row] == 0 || [indexPath row] == 1) {
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}

基本的に、特定のセル識別子に対して、すべてのインデックス パスに同じプロパティ セットを設定する必要があります。一部のインデックス パスのプロパティのみを設定すると、セルが再利用されるにつれて問題が発生し始めます。

于 2013-09-10T01:30:03.993 に答える