制作自定义的动态表格视图单元格

Posted

技术标签:

【中文标题】制作自定义的动态表格视图单元格【英文标题】:Making custom, dynamic tableview cells 【发布时间】:2014-01-23 10:29:43 【问题描述】:

我正在努力弄清楚如何完全控制我的 tableview 单元格。我希望它们看起来像这样:

现在我需要知道如何正确管理我的细胞。我应该制作表格视图单元格的子类吗?我应该在 tableview 的故事板中做这一切吗?这就是我现在正在做的事情。另外,如何根据文本行数实现动态单元格高度?

谢谢

【问题讨论】:

通过查看屏幕截图,您必须将单元格子类化 我认为您应该将您的问题分成两个单独的线程。自定义单元格和基于内容的动态单元格高度是两个不同的故事。 【参考方案1】:

您应该继承 UITableViewCell 类并使用 XIB 创建您自己的自定义单元格。这将为您提供很大的活动空间。

请参阅本教程了解如何执行此操作: http://www.appcoda.com/customize-table-view-cells-for-uitableview/

【讨论】:

您的答案和给定的链接已经过时了。 当涉及到 UITableViewCell 类的子类化时,这个答案仍然非常相关。的确,还有其他技术,但这是我的首选,也是我从中学到的教程。 即使我是用户故事板,我还应该创建 XIB 吗? @akashg 您也可以使用故事板进行子类化...参考***.com/questions/8663118/…和***.com/questions/9010033/…【参考方案2】:

你可以创建一个自定义视图并在 cellForRowAtIndex 中使用以下内容

static NSString * cellIdentifier=@"MyTableView";
UITableViewCell * cell;
if(cell== nil)

    cell = [myTableView dequeueReusableCellWithIdentifier:cellIdentifier];
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    contentCell.tag =100;
     contentCell=[[ContentOfCell alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
    [cell.contentView addSubview:contentCell];

    
    else
        // Reusable part. Reuse the UI controls here from existing cell
        contentCell = (ContentOfCell *)[cell.contentView viewWithTag:100];
    
    //Assign all the data here

    contentCell.nameField.text=[arr objectAtIndex:indexPath.section];
    //same way for other fields
   

contentCell 是自定义视图

【讨论】:

【参考方案3】:

我将尝试分三个部分回答您的问题:

    对于基于文本内容的动态单元格高度:您有一个名为 heightForRowAtIndexPath 的表格视图委托,您应该根据其字体和字体大小特征计算文本的高度,当然,通过提供可用宽度,您可以使用 NSString 的“sizeWithFont”方法。

    要对单元格外观进行更多控制:您应该创建一个表格视图单元格子类并在 cellForRowAtIndexPath 中使用它。

    您是否应该使用情节提要进行此操作:没有必要使用情节提要。

【讨论】:

以上是关于制作自定义的动态表格视图单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何动态更改自定义单元格的表格视图单元格的高度?

表格视图单元格高度动态 + 从 .xib 加载

动态表格视图单元格,以编程方式更改子视图高度

为啥在制作自定义表格视图单元格时将可重用单元格出列两次

根据在单元格中的文本字段中输入的值动态增加表格视图单元格

表格视图单元格文本标签不包含所有字符串