投稿したコードの修正例を投稿します。より多くのビューを処理するように拡張できます。
手順は次のとおりです。
- セットアップ全体を処理するメソッドをCustomCellクラスに作成します(例
setupWithItems:
:)
- セルが入ったら
cellForRowAtIndexPath:
(セルをデキューまたは作成した後)、setupWithItems:
セルに表示されるアイテムの新しいリストを使用して呼び出す必要があります。
setupWithItems:
実装では、UISegmentedControlを親ビューから削除してください。セグメント化されたコントロールがカスタムセルのプロパティとして保存されている場合は、これを簡単に行うことができます。
setupWithItems:
実装では、新しいUISegmentedControlを作成し、それをCustomCellのビュー階層に追加します。
サンプルコード:
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
CustomCell* cell = [tableView dequeueReusableCellWithIdentifier:kSomeIdentifier];
if (!cell)
{
// Create a new cell
}
NSArray* currentCellItems = [self cellItemsForRow:indexPath.row];
[cell setupWithItems:currentCellItems];
return cell;
}
そして、CustomCellサブクラスでは:
- (void)setupWithItems:(NSArray*)items
{
if (self.segmentedControl)
{
[self.segmentedControl removeFromSuperView];
self.segmentedControl = nil;
}
// More setup...
UISegmentedControl *btn = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:btn_title]];
// set various other properties of btn
[cell.contentView addSubview:btn];
}