使用registerNib处理多个自定义UITableViewCell时遇到问题

时间:2012-11-09 22:47:56

标签: ios uitableview

viewDidLoad我有:

[self.tableView registerNib:[UINib nibWithNibName:@"TypeOneCell" bundle:[NSBundle mainBundle]]
               forCellReuseIdentifier:@"CustomCellOne"];

cellForRowAtIndexPath

TypeOneCell *cell;

cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellOne"];
return cell;

我想对我推/弹的所有表使用相同的UITableViewController类。所以我可能会为它创建一个枚举类型和一个变量。那么我将检查视图控制器的类型,然后相应地进行调整。我的问题是我将如何以与上述相同的方式进行此操作。这是(viewDidLoad)的问题:

switch (self.theControllerType) {
         case CPTypeOne:
             [self.tableView registerNib:[UINib nibWithNibName:@"TypeOneCell" bundle:[NSBundle mainBundle]]
                   forCellReuseIdentifier:@"CustomCellOne"];
             break;
         case CPTypeTwo:
             [self.tableView registerNib:[UINib nibWithNibName:@"TypeTwoCell" bundle:[NSBundle mainBundle]]
                     forCellReuseIdentifier:@"CustomCellTwo"];
             break;
         default:
             break;
}

然后(cellForRowAtIndexPath):

switch (self.theControllerType) {
    case CPTypeOne {
        TypeOneCell *cell;
        cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellOne"];
        return cell;
        break;
    case CPTypeTwo {
        TypeOneCell *cell;
        cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellTwo"];
        return cell;
        break;
    default:
        break;
}

或者这是错误的做法?有没有更有效的方法呢?

1 个答案:

答案 0 :(得分:2)

删除viewDidLoad方法中的切换条件,一切正常。