を使用する必要はありません@IBInspectable
。UITableViewDelegate
メソッド内で各テーブル ソースを条件付きで使用するだけです。これを行う方法の 1 つを次に示します。
最初にストーリーボードのUITableViewController
内にプロトタイプ セルを追加し、次にそのプロトタイプ セル内にUITableView
独自のプロトタイプ セルを持つ を追加します。
次に、内側と外側の両方のテーブル ビュー セルの再利用識別子を次のように設定します。
外部テーブル ビュー セル:
内側のテーブル ビュー セル:
次に、その内側のテーブルビューのデータ ソースとデリゲートをUITableViewController
の独自のデータ ソースとデリゲートにリンクします。
次に、UITableViewController
クラス内で、テーブルの要素を条件付きで設定できます。次に例を示します。
- (void)viewDidLoad {
[super viewDidLoad];
dataSource1 = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", nil];
dataSource2 = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == self.tableView) {
return 80;
} else {
return 20;
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
if (tableView == self.tableView) {
return dataSource1.count;
} else {
return dataSource2.count;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell;
if (tableView == self.tableView) {
cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier" forIndexPath:indexPath];
} else {
cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier2" forIndexPath:indexPath];
}
// Configure the cell...
if (tableView == self.tableView) {
cell.textLabel.text = [dataSource1 objectAtIndex:indexPath.row];
} else {
cell.textLabel.text = [dataSource2 objectAtIndex:indexPath.row];
cell.backgroundColor = [UIColor blueColor];
}
cell.textLabel.backgroundColor = [UIColor clearColor];
return cell;
}
この場合、次の結果が生成されます。