自定义组件到表格中的单元格

时间:2015-03-16 06:04:20

标签: ios objective-c uitableview

如何在tableview中向不同的单元格添加不同的组件。请注意,这是一个静态表,我只有4个单元格。

第一个单元格将具有UIImageView。

其他3个单元格只有标签或文本字段。

如何添加这些组件。

注意:这是一个基于故事板的应用程序,我添加了

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MyTableViewCell *cell;
    if(indexPath.row == 0)
    {
        cell = [tableView dequeueReusableCellWithIdentifier:@"cell0"];
        cell.profImageView.image=[UIImage imageNamed:@"m.jpg"];
        return cell;
    }
    else if(indexPath.row == 1)
    {
        cell = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
        cell.lbl.text=@"Hey";
        return cell;
    }
    else if(indexPath.row == 2)
    {
        cell = [tableView dequeueReusableCellWithIdentifier:@"cell2"];
        cell.lbl.text=@"Hey 2";
        return cell;
    }
    return cell;
}

2 个答案:

答案 0 :(得分:2)

您的数据源中有4行,但您只提供3行的单元格对象。最后一个return语句将为indexPath.row==3执行,而您尚未对其进行初始化。只需为indexPath.row==3初始化它就可以了。

答案 1 :(得分:0)

MyTableViewCell *cell;
if(indexPath.row == 0)
{
    cell = [tableView dequeueReusableCellWithIdentifier:@"cell0"];
    cell.profImageView.image=[UIImage imageNamed:@"m.jpg"];
}
else if(indexPath.row == 1)
{
    cell = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
    cell.lbl.text=@"Hey";
}
else
{
    cell = [tableView dequeueReusableCellWithIdentifier:@"cell2"];
    cell.lbl.text=@"Hey 2";
}
return cell;

你没有给你的函数提供默认返回值的原因是它要求“如果一切都出错我将返回什么?”。所以你可以修改你的代码,如上所述,你可以尝试使用switch - case来制作如下代码。

TableViewCell *cell;
    switch (indexPath.row) {
  case 0:{
      cell = [tableView dequeueReusableCellWithIdentifier:@"cell0"];
      cell.imageView.image=[UIImage imageNamed:@"m.jpg"];
  }break;
        case 1:{
            cell = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
            cell.myLabel.text=@"Hey";
  }break;
        case 2:{
            cell = [tableView dequeueReusableCellWithIdentifier:@"cell2"];
            cell.myLabel.text=@"Hey 2";
  }break;

  default:{
      cell = [tableView dequeueReusableCellWithIdentifier:@"cell0"];
      cell.imageView.image=[UIImage imageNamed:@"m.jpg"];

}
            break;
    }
    return cell;

在上面的switch-case中,你可以在默认语句中调用你想要的单元格。