0

dequeueReusableCellWithIdentifier:ペン先をインスタンス化していますか??

スタックトレース

一度に画面に表示できるよりも多くのセルをインスタンス化しているように見えるので、私は尋ねます。(ただし、テーブル内の行の総数よりも少ない)

FRCTableViewDataSourceを使用して、テーブル ビューを Core Data のいくつかの Artist オブジェクトにバインドしています。それは問題ではないと思いますが、バニラ テーブル ビューのデータ ソースとして機能しているだけです。

cellForRowAtIndexPath の実装を次に示します (ログ ステートメントを追加しました)。

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier = nil;
    Class theCellClass = [self cellClassAtIndexPath:indexPath];
    if ([theCellClass isSubclassOfClass:[FRCTableViewCell class]])
        cellIdentifier = [theCellClass reuseIdentifier];
    NSLog(@"%@", cellIdentifier);
    UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:cellIdentifier];
    NSLog(@"%@", cell);

    ...

    return cell;
}

そして、これがawakeFromNibの私の実装です

- (void)awakeFromNib
{
    NSLog(@"waking");
}

コンソール出力は次のようになります。

ArtistTableViewCell
waking
<ArtistTableViewCell: 0xc678ad0; baseClass = UITableViewCell; frame = (0 0; 295 50); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc6789f0>>

TL;DR 私のテーブル ビューには、あなたのテーブル ビューよりも主導権があります。

何か案は?

4

1 に答える 1

0

セルのペン先に再利用識別子を適切に設定しましたか?そうでない場合は、再利用IDが一致しないため、毎回新しいセルを取得します。

それ以外の場合は、ええ、このバージョンのデキューは、デキューできるものがない場合にペン先をインスタンス化します。そこから、セルインスタンスを作成し、nib、yadyadayadaからawakeを呼び出します。

于 2012-07-27T08:31:35.773 に答える