これは最もよく聞かれる質問の1つですが、包括的な答えは1つ見つかりませんでした。UITableViewにカスタムセルが必要です。ラベルやテキストフィールドを含むものと、画像やボタンを含むものがあります。セルの種類ごとに別々のクラスを作成しました。複数のセクションを持つGroupStyleテーブルを使用しています。現在、cellForIndexPathにセルを追加しており、セクションの場合はswitch-case、セクションの行の場合はif-elseを使用しています。
id cell;
switch(indexPath.section) {
case 0:
if(indexPath.row==0) {
CellA *cell = [[[CellA alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
//configure cell
return cell;
}
else if(indexPath.row==1) {
CellB *cell = [[[CellB alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
//configure cell
return cell;
}
break;
case 1:
if(indexPath.row==0) {
CellC *cell = [[[CellC alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Celld%",indexPath.row]] autorelease];
//configure cell
return cell;
}
break;
default:
break;
}
return cell;
コードブロック内のセルの定義により、セルが認識できなくなるため、最後にセルを返す必要があります。それを解決するために、idを上にしてセルを宣言しましたが、これは正しい方法ではないことを私は知っています。複数のタイプのセルのこの宣言とアクセスの問題を解決するにはどうすればよいですか?
現在、1つの画面に収まり、スクロールする必要のない4〜5行があります。だから、私は細胞を再利用していません。ただし、編集中にさらに多くの行が押し込まれます。また、別のテーブルには、画面をスクロールできる行がさらにあります。これは、セルを再利用する必要があることを意味します。ですから、私の質問の2番目の部分は次のとおりです。複数のカスタムセルを再利用するにはどうすればよいですか?