iOS动态单元格内容

时间:2014-09-01 10:11:52

标签: ios objective-c iphone ipad uitableview

我已经搜索了很多,但没有找到我要找的东西。

我希望UITableViewCell使每个人都拥有动态内容。例如,一个单元格可以具有地名,地址,电话号码,图像等。另一个单元格可以具有这些属性中的一些或全部。

enter image description here

我知道我应该让函数cellForRowAtIndexPath:heightForRowAtIndexPath:适当地返回内容。

我面临的问题是我在nib文件中设计了单元格,并从那里加载布局。我可以根据条件计算每个细胞的高度(虽然这很繁琐),如果缺少一个东西,我还需要在那个细胞中安排东西。例如,如果缺少地名,则通过setFrame:向上移动所有元素。

我相信应该有一个简单的方法吗?

1 个答案:

答案 0 :(得分:2)

在这种动态的情况下,我不会费心使用故事板来实现这一目标。以编程方式执行此操作应该非常容易......

如果你真的需要在故事板中创建它,你可以生成一个完整的单元格,可以包含(例如)5个标签。现在在表视图数据源中,我假设您有一些对象数组,其中每个元素在表视图中表示一行。如果是这样,那么在你的情况下,每个这个对象都可以有一个方法,它将返回一个非空字符串数组(实际显示的字符串),它可以是1到5个字符串的动态计数。

如果这样做,您将在请求索引路径行的高度的方法中请求此数组,然后使用此计数,您可以返回行的高度(例如numOfStrings*40.0f)。在请求您的单元格的方法中,您可以使用用于计算高度的相同数组填充这些标签。

对于非故事板方法,我建议您覆盖UITableViewCell,生成一个静态方法,它将返回字符串计数的单元格高度,并生成一个带字符串数组的初始化程序,然后应该遍历数组生成标签和设置文本。