【问题标题】:Need to dynamically generate UITableView items from JSON. What is the best approach? [closed]需要从 JSON 动态生成 UITableView 项。最好的方法是什么? [关闭]
【发布时间】:2016-12-20 09:12:12
【问题描述】:

假设我有一个这样的 JSON 对象数组:

{
  "views": [
    {
    "type": "UILabel",
    "data": "Here is a headline",
    "id": "label1"
    },
    {
    "type": "UIImage",
    "data": "http://doge2048.com/meta/doge-600.png",
    "id": "image1"
    },
    {
    "type": "UIButton",
    "data": "Click me",
    "id": "button1"
    }
  ]
}

例如,这就是该项目的外观。

  • 每个表格单元格都有不同的 JSON,所以我无法在 Storyboard 中设计它们。
  • 动态视图甚至可以是 UIStackViews,所以我不能只创建一个主 UIStackView 并将它们添加到其中。 (因为它滞后非常糟糕。)
  • 数据源和结构不是问题。我的问题是如何构建 UI 和约束。

【问题讨论】:

  • 您是否获得了一个 NSDictionary 数组作为您的 JSON 响应?
  • 这无关紧要。我已经很好地处理了 JSON。问题在于用它创建 UI。
  • 您只需要序列化您的 json 响应并将该数据传递到 tableview 数据源方法 + 设计自定义单元格以在 tableview 中显示您的数据。
  • 所以 json 将包含所有应该在单元格内的视图,或者它是否已修复它将具有标签、图像和按钮?
  • I am asking about how to create constraints and how to add views to master view of cell. 然后你有一个问题,因为你的问题看起来像是“嘿,我有这个 JSON,我需要制作一个像这个屏幕截图这样的 tableView”之一,完全没有任何努力。如果你的问题不是这样,如果你有一个具体的问题,请编辑和重构并暴露你的真正问题,解释你在哪里挣扎,你不明白什么,等等。提供信息。 :)

标签: ios objective-c swift xcode


【解决方案1】:
  1. 为每种支持的元素类型创建自定义类型的 UITableViewCell

    • 标签单元
    • 图像单元
    • 按钮单元
  2. 通过将每个元素(视图模型)的 json 内容传递给相应的单元格类型来生成表格视图单元格

json内容 = { “类型”:“UILabel”, "data": "这是一个标题", “id”:“标签1” } LabelCell(viewModel:jsonContent)

您可能需要使用出售尺寸表视图单元格来让单元格高度自动调整。

检查此链接: https://www.raywenderlich.com/129059/self-sizing-table-view-cells

【讨论】:

    【解决方案2】:

    第 1 步:收到 JSON 数据后立即将其解析为模型类。

    第 2 步:该数据模型成为表格视图的数据源。当它发生变化时,您会更新表格视图。

    第 3 步:与每个表格视图一样,您拥有从数据模型填充表格视图单元格的方法,这就是您要做的。

    如何构建 UI 和约束:通过编写代码。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多