无需使用@IBInspectable
. 您可以有条件地在方法中简单地使用每个表源UITableViewDelegate
。这是执行此操作的一种方法:
首先在你的故事板中UITableViewController
,添加一个原型单元格,然后在该原型单元格中添加一个UITableView
带有它自己的原型单元格的单元格。
然后设置内部和外部表视图单元格的重用标识符,如下所示:
外部表格视图单元格:
内部表格视图单元格:
然后将内部 tableview 的数据源和委托链接到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;
}
在这种情况下会产生以下结果: