2

上下にスクロールするたびに、そのセルが表示されると「cellForRowAtIndexPath」が再度呼び出されるため、既に描画されているセルが再描画されます。

既に呼び出されているセルに対して「cellForRowAtIndexPath」を呼び出さない方法はありますか。

これは、cellForRowAtIndexPath が indexpath に対して呼び出されると、ユーザーがスクロールしたときに再度呼び出すべきではありません。

フラグ配列にフラグを設定して手動で行うことができますが、より直接的な方法はありますか?

私は間違いなくパフォーマンスの問題を引き起こしているデザインを持っています。デザインの説明も変更も出来ないので質問させて頂きます。

4

2 に答える 2

2

「cellForRowAtIndexPath」メソッドを再度呼び出さないと、パフォーマンスの問題が発生する可能性がありますが、次のように行ごとに異なるセル識別子を割り当てることでこれを行うことができます。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell%d%d", indexPath.row, indexPath.section]];
于 2012-11-16T06:59:17.140 に答える
0

//新しいコンテンツを作成する前に、すべてのコンテンツを削除してください。

//USE IN "cellForRowAtIndexPath" メソッド

 for(UIView *view in cell.contentView.subviews){
        if ([view isKindOfClass:[UIView class]]) {
            [view removeFromSuperview];
        }
    }
于 2012-11-16T08:13:08.177 に答える