在TableViewCell中重复一个标签

时间:2017-01-04 13:28:22

标签: ios objective-c swift uitableview uilabel

请查看以下屏幕截图。

Mock up我需要解决方案才能在iOS 8中运行。 Stack View在iOS 8中没有帮助

我被分配了这个模拟...我不知道如何重复tableViewCell中的特定标签。如您所见,我需要根据JSON数据中的项目重复紫色标签和白色标签。

5 个答案:

答案 0 :(得分:2)

这是用户UIStackView的完美方案,在堆栈视图中添加5个标签,并隐藏(.isHidden属性)您不想显示的标签,将根据其中的标签数量将堆叠视图设置为收缩展开

我希望您已经了解Stack View,如果没有,那么您必须寻找基本的在线教程。

答案 1 :(得分:1)

正如Mr.Bista所说,StackView有一个选项。

  1. 使用设计在Storyboard中创建自定义单元格。
  2. 使用堆栈视图而不是添加多个标签。
  3. 在代码中使用自定义单元格。您可以参考此网站来指导您。 APPCode self sizing cells或只是在stackoverflow上寻找。
  4. 我现在没有自己测试,但我认为使用stackView和自我调整单元格可能会很棘手。因为每个单元格可以根据StackView的内容具有不同的高度。所以百分百肯定,你总是可以计算出细胞的高度。

    1. 根据json内容更改堆栈视图的内容。 (紫罗兰标签的记录数)
    2. 您还可以检查堆栈是否存在类似问题。 请看这个链接哪里有可能的答案。 Multiple UILabels inside a self sizing UITableViewCell

答案 2 :(得分:1)

您可以使用水平和垂直堆栈视图的组合来实现此目的:

enter image description here

此解决方案允许您使用上面建议的其他方法避免两个陷阱:

  • 您不必乱用切换视图的隐藏属性
  • 您不限于固定的最大项目数

以下是代码:

compile 'com.google.firebase:firebase-invites:10.0.1'

}

这是故事板的样子:

enter image description here

答案 3 :(得分:0)

storyboard中,您需要两个UILabel,分别为白色和紫罗兰色。如果Json有数据,则分配,否则执行代码

cell.label1.frame.size.height = 0
cell.label2.frame.size.height = 0

注意:对于您在UITableViewCell中为组件提供的约束感到满意。

答案 4 :(得分:0)

根据@the_dahiya_boy回答:

  1. 您获得了具有特定字段的JSON字段(可能有一个或两个字段需要在紫色字段中显示)

  2. 您可以查看有多少字段

  3. 如果只有一个字段,那么您可以将第二个视图的帧(第二个字段,即为空)设置为0