我有一个UIViewController里面有UITableView,上面的表我有UISegmentControl,当我按下段控件时我想加载一个UItableCustomeCell,请你在这个实现中帮助我,我不知道应该如何添加它们cellForRowAtIndexPath,因为我有3个不同的自定义单元格
这是代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
if (indexPath.row == self.segmentedControl.selectedSegmentIndex == Test1) {
MytestsCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MytestsCell"];
if (!cell) {
cell = [[MyBooksCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"MytestsCell"];
}
return cell;
}
else if (indexPath.row == self.segmentedControl.selectedSegmentIndex == tests) {
testCell *cell = [tableView dequeueReusableCellWithIdentifier:@"testCell"];
if (!cell) {
cell = [[TestsCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"testsCell"];
}
return cell;
}
break;
case 1:
if (indexPath.row == self.segmentedControl.selectedSegmentIndex == PTest) {
PTestsCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PTestsCell"];
if (!cell) {
cell = [[PTestsCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"PTestsCell"];
}
return cell;
}
break;
}
我不希望在一个表中有3个,每个自定义单元格用于一个段控件
提前致谢!
答案 0 :(得分:0)
我能想到的另一种选择是切换表视图数据源。但我不建议这样做。您可以定义数据源的委托,并为其选择分段控件的表视图单元格。但这只会解决问题。我会坚持你的方法。
答案 1 :(得分:0)
所以......这就是我要做的。从iOS6开始,如果您使用
,则不再需要在从tableview中出列后检查您的单元格是否为零- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath
只要标识符存在,您就可以获得一个单元格。此外,它看起来不像你需要做任何额外的配置,所以这样的东西应该工作:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier = [NSString stringWithFormat:@"%d", self.segmentedControl.selectedSegmentIndex];
return [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];
}
编辑:我忘了添加,为了使用它,请使用与段对应的数字作为每个单元格的标识符。