在每个UISegmentController中调用不同的自定义单元格

时间:2013-10-11 20:54:52

标签: ios objective-c uitableview uiviewcontroller

我有一个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个,每个自定义单元格用于一个段控件

提前致谢!

2 个答案:

答案 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];
}

编辑:我忘了添加,为了使用它,请使用与段对应的数字作为每个单元格的标识符。