不同的UITableViewCell高度

Jos*_*ane 13 iphone objective-c uitableview ipad

我在故事板中构建了三个不同的单元格,并将所有出口连接起来,每个单元格都有一个唯一的标识符.

例如,我有一个包含图片的单元格,另一个包含标签的单元格,另一个包含其他内容,因此它们都是唯一的,每个单元格类型都需要自己的高度(动态或状态,无关紧要).

但是,我怎么能用'indentifier1'制作一个单元格返回一定的高度,然后其他单元格返回不同的高度?

我知道我可以使用,- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath但我不确定如何区分细胞.

我正在使用核心数据并从中获取tableview的结果.

编辑

我用标签尝试了这个,但它在第一个if语句崩溃了:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat cellHeight;

    if ([[tableView cellForRowAtIndexPath:indexPath] tag] == 1) cellHeight = 170;
    else if ([[tableView cellForRowAtIndexPath:indexPath] tag] == 2) cellHeight = 100;
    else if ([[tableView cellForRowAtIndexPath:indexPath] tag] == 3) cellHeight = 140;

    return cellHeight;
}
Run Code Online (Sandbox Code Playgroud)

Par*_*iya 17

更新

现在使用UITableView的动态高度,因为它很容易,因为UITableView会自动计算它

以下是您的要求使用此方法的示例:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

  //calculate height according to text and on basis of indexPath
  if(indexpath.row == 0)
  {
    return 60.0f;
  }
  else if(indexpath.row == 1)
  {
    return 70.0f;
  }
  else
  {
    return 55.0f;
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:如果您的尺寸没有固定,那么您将计算它,然后根据您的要求提供上述方法.


hol*_*lex 0

当然它崩溃了,因为您处于委托方法中(您是 的委托UITableView)并且从此类方法回调UITableView方法会带来非常高的崩溃风险。

您所调用的方法 ( [tableView cellForRowAtIndexPath:indexPath]) 将再次调用委托方法来获取单元格的高度,这会导致无限循环,也称为崩溃。

这是正常行为。

关键在于您的原始数据源,您可以将每行的高度存储在原始数据源中,并且您可以在委托方法中从那里读取所有内容,而没有任何风险。

您的代码片段没有说明您的数据源在哪里以及您的数据源是什么类型,因此我无法在缺乏它的情况下提供更准确的解决方案,但想法就是这样。