0

我尝试用不同的 UITableViewCells 填充我的 UITableView。我试图通过标识符从 XIB 文件中选择 3 个 UITableViewCells 中的 1 个,但我无法获得 UITableViewCell 标识符的值。

- (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{



MyTableViewCell *cell = (MyTableViewCell *) [tableView dequeueReusableCellWithIdentifier:@"CellTwo"];

 if(nil == cell){

  NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
  for (id currentObject in topLevelObjects) {
   if ([currentObject isKindOfClass:[MyTableViewCell class]]) {
    MyTableViewCell *tmpCell = (MyTableViewCell *) currentObject;
    if (tmpCell.identifier == @"CellTwo") {
     cell = (MyTableViewCell *) currentObject;     
    }
    [tmpCell release];
    break;
   }
  } 
 }

 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

 return cell;}
4

1 回答 1

0

我通过为每个 UITableViewCell 创建一个子类解决了这个确切的问题。当您比较类类型时,您可以输入单元格的类型:

        cell = (FooterTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"footerTableViewCell"];

        if (cell == nil){

            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CommonTableViewCell" owner:nil options:nil];

            for (id currentObject in topLevelObjects){
                if ([currentObject isKindOfClass:[FooterTableViewCell class]]){
                    cell = (FooterTableViewCell *)currentObject;
                    return cell;
                }
            }
        }

我有一些表可以重复使用完全相同的单元格格式,我希望将它们放在一个可以随时更改的通用 XIB 中。在该控制器的 .h 中,我只是为三种单元格类型中的每一种声明了 UITableViewCell 的三个子类。

于 2011-07-06T21:57:39.407 回答