0

我有一个带有 UITableView 的 UIViewController,在表格上方我有 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 个放在一个表中,每个自定义单元格用于一个段控件

提前致谢!

4

2 回答 2

0

我能想到的一种替代方法是切换表视图数据源。但我不建议这样做。您可以定义数据源的委托,并要求它为选定的分段控件提供表格视图单元格。但这只是解决了问题。我会坚持你的方法。

于 2013-10-11T21:03:32.310 回答
0

所以......这就是我要做的。从 iOS6 开始,如果使用

- (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];
}

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

于 2013-10-11T21:17:15.933 回答