因为 cell会复用,所以使用cell的时候会检查一下cell的状态,比如
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cartCell" forIndexPath:indexPath];
if(cell == nil){
//do something
UIImageView *imageView = alloct init
imageView.tag = tag;
[cell.contentView addSubview:imageView]
}
else{
UIImageView *imageView = cell from tag get view
}
但是我的情况是,cell一开始就不为空,于是我这么做:
if ([cell.contentView subviews].count == 0) {
// do some thing
}
最后我发现,一个table有5个cell全部都在显示区域里面,只有第一个cell是新的,其他都是复用的,这样是不是不对?
讲道理不应该是屏幕内的cell都是独立的,当屏幕外的cell滑动进来才会导致复用么?
同意します、Cool Ai Dian は次のように付け加えます:
リーリーこのメソッドはデフォルトで空ではないセルを返します。直接再利用できるセルがない場合は、セルの作成に役立ちます。そのため、一般的なアプローチは次のとおりです。
1. UITableViewCell のサブクラス ACell を作成します。
2.ACell書き換え方法:リーリー
このメソッドは、デキューで再利用可能なセルが見つからず、新しいセルを作成する必要がある場合に呼び出されます。リーリー
4. cellForRowAtIndexPath:の場合に直接呼び出します。 リーリー
UITableViewCell を継承してコードを再利用することをお勧めします。そして、
リーリー- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
でサブビューを初期化します。if ([cell.contentView サブビュー].count == 0) {
リーリー} この判断は決して真実ではありません。セルにはいくつかのサブビューが付属しています
リーリー
}