如何配置cellForRowAtIndexPath来处理两种不同的自定义UITableViewCell类型

时间:2014-08-19 03:35:30

标签: ios uitableview

我正在尝试使用两种不同的自定义UITableViewCell,但我正在努力完成这项工作。我有以下几点,但认为一切都需要称为单元格。另外,我不确定我的返回类型是否正确。设置它的规范方法是什么?这是这个问题的后续行动(尽管不完全相关:how to configure this to be rendered in a UITableView or should this be done in multiple UITableView's

提前获取任何帮助

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  static NSString *MenuHeaderCellIdentifier=@"HeaderCell";
  static NSString *MenuItemCellIdentifier=@"ItemCell";

  HeaderCell *cell = [self.menuTV dequeueReusableCellWithIdentifier:HeaderCellIdentifier];
  ItemCell *miCell = [self.menuTV dequeueReusableCellWithIdentifier:ItemCellIdentifier];

  id dic=self.tmpMenu.listItems[indexPath.row];
  if([dic isKindOfClass:[Header class]]){
    Header *menuHeader=(Header *)dic;
    cell.nameLabel.text=@"here";
    return cell;
  }else if([dic isKindOfClass:[Item class]]){
    Item *item=(Item *)dic;
    miCell.headerLabel.text=@"here";
    return miCell;
  }

1 个答案:

答案 0 :(得分:2)

假设您在故事板中使用原型单元格,或者您已经注册了单元格标识符,那么您的代码几乎是正确的。您应该只将所需的单元格类型出列 -

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  static NSString *menuHeaderCellIdentifier=@"HeaderCell";
  static NSString *menuItemCellIdentifier=@"ItemCell";

  id dic=self.tmpMenu.listItems[indexPath.row];

  if([dic isKindOfClass:[Header class]]) {
    HeaderCell *headerCell = [self.menuTV dequeueReusableCellWithIdentifier:menuHeaderCellIdentifier];
    Header *menuHeader=(Header *)dic;
    headerCell.nameLabel.text=@"here";
    return headerCell;
  } else if([dic isKindOfClass:[Item class]]) {
    ItemCell *itemCell = [self.menuTV dequeueReusableCellWithIdentifier:menuItemCellIdentifier];
    Item *item=(Item *)dic;
    itemCell.headerLabel.text=@"here";
    return itemCell;
  }