我尝试用不同的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;}
答案 0 :(得分: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子类。