0

セクションを追加するまで正常に機能していたUITableViewがあります。これで、最初のセルのデータが他のすべてのセルで繰り返されます。下のセクション行を削除すると、すべてが正常に戻ります。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    NSInteger sections = self.objects.count;

    return sections;
}

ここで何が起こっているのかについて何かアイデアはありますか?ちなみに、私のデータソースはCoreDataです。

編集

numberOfRows私は1を返します。

セルを実装する方法は次のとおりです。

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

Item *p = [[[ItemStore defaultStore] allItems]
                                objectAtIndex:[indexPath row]];

    ItemCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ItemCell"];

    [cell setController:self];
    [cell setTableView:tableView];

    [[cell nameLabel] setText:[p itemName]];
    [[cell serialNumberLabel] setText:[p serialNumber]];
    [[cell valueLabel] setText:[NSString stringWithFormat:@"$%d", [p valueInDollars]]];

    [[cell thumbnailView] setImage:[p thumbnail]];


return cell;
}
4

2 に答える 2

2

おそらく使用しています

cell.textlabel.text = [self.objects objectAtIndex: indexPath.row];

cellForRowAtIndexPathメソッドで。

行番号は毎回増加するため、これは1つのセクションを持つテーブルビューで機能します。ただし、複数のセクションがある場合は、各セクションの最初の行の行番号が0にリセットされます。したがって、indexPath.rowはcellforRowAtIndexPathメソッドで常に0を返すため、毎回最初のオブジェクトを取得します。どのセクションにいるかを確認するか、配列から正しいオブジェクトを取得する方法としてセクション番号を使用する必要があります。

編集:あなたが投稿したコードを見ると、これはまさに起こっていることです!現在のセクションを特定し、適切に入力することを検討してください。

于 2012-08-16T14:27:18.940 に答える
1

これは通常、iOSでセルが再利用される方法が原因で発生します。

cellForRowAtIndexPath:メソッド内で使用可能なすべてのオプションを設定していることを確認してください。

// init cell etc...
cell.textLabel.text = @"Your dynamic text";
cell.textLabel.textColor = [UIColor myColor];
// etc...

return cell;

また、コアデータを使用している場合は、使用している可能性のあるNSArrayおよびNSDictionariesから適切なデータを選択していることを確認してください。

これで問題が解決しない場合は、コードなどの情報を追加してください。

于 2012-08-16T14:18:17.917 に答える