我会针对您发布的代码发布样本修复。它可以扩展到照顾更多的意见。
的步骤是:
- 创建您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];
}
我去与方法:运行'dequeueReusableCellWithIdentifier'和'如果(细胞==零){之后。 ..}'我'用于(在cell.contentView.subviews的UIView * v){ 如果([v isKindOfClass:[UISegmentedControl类]]){ [v removeFromSuperview]; } }'也可以根据需要轻松添加其他类型的视图。 – SaltyNuts