4

UICollectionViewController とカスタム セルがあり、cellForRowAtIndexPath: メソッドで indexPath.row に基づいてセルを設定します。しかし、間違った結果が得られます。このセルは最初の位置の後でさえ表示されます。前後にスクロールすると、ランダムな場所にポップアップします。どうすれば修正できますか?

コードは次のとおりです。

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    DVGCollectionViewCell *cell;

    cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

    if (indexPath.row == 0)
    {
        cell.imageView.image = [UIImage imageNamed:@"something1.png"];
        cell.buyLabel.text = @"170";
        cell.textLabel.text = @"11.2011";
    }

    return cell;
}
4

4 に答える 4

4

UITableView と UICollectionView の両方のセルはリサイクルされます。つまり、画面から消えると、再び必要になるまで NSSet に入れられます。必要に応じて、UICollectionView ビュー階層で再度追加されたセット広告から削除されます。セル内の値を消去したり、再度設定したりしない場合、セルは作成されたときと同じデータを表示します。
これは、パフォーマンス上の理由から、セルの作成に時間がかかるため、再度値を設定する代わりに作成されます。
問題がレイアウトにある場合は、レイアウト フロー オブジェクトを確認してください。どのサイズを設定しましたか?

于 2013-06-29T10:58:50.097 に答える
1

セルの内容が設定されると、それは決してきれいにされませんでした。そのため、追加の節としてすべてのセル プロパティのクリーニングを追加しましたが、正常に動作します。

于 2013-06-29T10:45:39.160 に答える
1

prepareForReuseカスタム セルの実装でオーバーライドする場合は、ビューを再び使用できるように準備するために必要なクリーンアップを実行できます。

于 2013-06-29T14:29:28.370 に答える