如何在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;
}
答案 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中,你可以在默认语句中调用你想要的单元格。