如何在UITableView自定义单元格中创建不一致的标签数量?

时间:2016-11-05 07:48:30

标签: ios objective-c uitableview reuseidentifier

我想创建一个包含多个标签的自定义单元格。如果您知道所需的固定标签数量,则可以轻松创建自定义单元格。但是,如果您不知道特定单元格需要多少标签,该怎么办?我从API端获取值,告诉所需的标签数量。如果有超过3个标签,我将有一个“查看更多”按钮来展开单元格以显示更多标签。

现在我可以考虑通过在自定义单元格中创建3个标签来实现此目的。在cellForRowAtIndexPath中,我可以隐藏最后两个标签,并根据API提供的数据更改单元格框架。但是,在点击“查看更多”按钮后,我仍然需要弄清楚显示更多标签。那么解决这一挑战的最佳方法是什么?你的小帮助将不胜感激。

注意:我没有使用故事板。我以编程方式创建每个对象。

4 个答案:

答案 0 :(得分:1)

您始终可以将UICollectionView放在UITableView的一行内。您UICollectionView的每个单元格都会有一个UILabel。根据您从API收到的电话号码,更新dataSource的{​​{1}}。如果您不希望显示“查看更多”按钮,这是一种方法。

答案 1 :(得分:0)

以编程方式设置您的单元格。当时,您需要单元格,您可能已经拥有数据并知道如何构建它。

即使您没有预先知道它,也可以在呈现时更改单元格的内容(即异步加载时)。

根据您的数据,使用带有格式化文本的文本视图等内容也可能会起作用,或者使用多行标签。如果标签的数量上限较低,您可能会从一开始就使用多个标签,并将其设置为不可见或在不需要时将其删除。另一种选择是使用不同的预配置单元格,具体取决于标签的数量。

仅在Interface Builder中完成此操作似乎是一项相当繁琐的工作。

在这种情况下,请小心重复使用单元格 - 为不同的配置使用不同的标识符,非常仔细地更新内部,或者根本不重复使用。

答案 2 :(得分:0)

如果你有2个或3个标签,有一个简单的解决方案,包括在单元格的底部放置第三个标签,如果这个标签应该存在,将其高度约束设置为它应该是什么,如果它不应该& #39; t存在将高度设置为零

另外,如果我真的明白你想做什么,我不能想到一个更简单的解决方案,而不是在你的单元格中有一个表视图,表视图显示你想要的多个标签,然后是你的单元格height应该等于嵌入式表格视图单元格高度的2倍。并且按钮将单元格的高度更改为与整个表格视图嵌入高度一样高。

希望有所帮助:)

答案 3 :(得分:0)

您可以动态设置tableView单元格高度。正如您所说,您将从API获取有关tableView单元格中有多少标签的信息。您可以将所有这些数据放在一个数组中。然后检查下面的代码。

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return ([[array objectAtIndex:indexPath.row] count] * yourLabelHeight);
}