制作自定义的动态表格视图单元格
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 中使用它。
您是否应该使用情节提要进行此操作:没有必要使用情节提要。
【讨论】:
以上是关于制作自定义的动态表格视图单元格的主要内容,如果未能解决你的问题,请参考以下文章