根据存在tableView的ViewController更改TableViewCell的类

时间:2010-01-21 10:26:47

标签: iphone uitableview

我只有1个tableView类但只有4个单元类。我将相同的tableView添加到应用程序中的所有viewControllers。不同之处在于细胞的类型(确切地说是类)。我想根据tableView所在的viewController更改单元格类。此外,单元格的内容视图是在单元格类的另一个子类中绘制的。请提供一个解决方案或方法来实现此功能。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用NSObjects -class方法向tableView询问它的类名,并使用它来决定要使用的单元类。

答案 1 :(得分:1)

您可能应该为每个视图控制器使用不同的表视图(如果您还没有)。

通常,您还可以为每个表视图使用不同的数据源/委托(例如,您可以使用每个视图控制器)。

但是,如果必须对所有四个表视图使用与数据源/委托相同的类,tableView:cellForRowAtIndexPath:(以及其他委托方法)会将表视图作为第一个参数,因此您可以像这样返回正确的单元格:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == myTableViewOne) {
        // dequeue or allocate/init and configure/return the cell for the first table view here
    } else if (tableView == myTableViewTwo) {
        // dequeue or allocate/init and configure/return the cell for the second table view here
    } else if (tableView == myTableViewThree) {
        // dequeue or allocate/init and configure/return the cell for the third table view here   
    } else {
        // dequeue or allocate/init and configure/return the cell for the fourth table view here
    }
}