私は2つの異なるタイプのUITableViewCellsを持つUITableViewを印刷しようとしています。UITableViewの奇妙な振る舞い
- 1(第3及びその後の細胞)から始まるもの(第2セル)を含まない空のテーブルビュー細胞、ちょうど黒の背景標識を含む
- テーブルビュー細胞、画像、等
私のテーブルビューの高さは、誰でも少なくとも3つのテーブルビューセルに収まることができます。
最初にテーブルビューを読み込むと、テーブルビューは完全にうまく見えます。最初の2つの行は黒で、3番目の行には「1」というラベルが付いています。
ただし、スクロールして下にスクロールしてから、上にスクロールしてください。私の最初の2つの空のセル(空であると思われる)は、3番目以降のセルでのみ見つかるはずのもので埋められます。
私はこの動作がセルを再利用するテーブルビューから来ていると思っていますが、それでもわかりません。
コードスニペット:セルのそれぞれ異なるタイプの場合
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
switch ([indexPath row]) {
case 0:
cell.contentView.backgroundColor = [UIColor blackColor];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
break;
case 1:
cell.contentView.backgroundColor = [UIColor blackColor];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
break;
default:
cell.contentView.backgroundColor = [UIColor blackColor];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
UILabel *rowLabel = [[UILabel alloc] initWithFrame:CGRectMake(25, 30, 200, 30)];
rowLabel.text = [NSString stringWithFormat:@"Row %d", [indexPath row]-1];
rowLabel.backgroundColor = [UIColor blackColor];
rowLabel.textColor = [UIColor whiteColor];
[rowLabel setFont:[UIFont fontWithName:@"GillSans-Bold" size:18]];
[cell.contentView rowLabel]; [rowLabel release];
UIButton *aButton = [[UIButton alloc] initWithFrame:CGRectMake(100, 50, 40, 40)];
[aButton setImage:anImage forState:UIControlStateNormal];
[cell.contentView addSubview:aButton];
[aButton release];
break;
}
return cell;
}
解決策を見つけた可能性があります。私はユニークな再利用識別子の使用を提案しました。私はそれぞれの細胞ごとにそれをしました。また、スイッチケースをifに移動しました。私はstackoverflowが私にできるとき私の答えを投稿します! – tommi
これは正しい解決策ではありません。可能であれば、セルを再利用する必要があります。そうしないと、スクロールが非常に遅くなる可能性があります。 – jrturton
@jrturton、私に知らせてくれてありがとう!あなたが再利用を意味するとき、セル内のすべてのもの(ボタン、画像を含む)を再利用することを意味しますか? – tommi