2010-08-15 56 views
0

我嘗試用不同的UITableViewCells填充我的UITableView。我試圖通過標識符從XIB文件中選擇3個UITableViewCells中的一個,但我無法獲得UITableViewCell標識符的值。從xib的標識符中選擇自定義的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;} 

回答

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的子類。