我會針對您發佈的代碼發佈樣本修復。它可以擴展到照顧更多的意見。
的步驟是:
- 創建您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