将JSON数据绑定到TableView和CollectionView

时间:2019-11-22 05:42:31

标签: ios json swift

我正在尝试创建一个表格视图,并在每个单元格中使用一个集合视图。我的JSON结构类似于电视单元的主菜单标题,在每个主对象中,我都会收到一个子菜单,该子菜单的数据我想在集合视图中使用。

我面临的问题是使用表单元格和集合单元格的索引来获取嵌套数据。这是我的JSON

  "MainMenu": [
    {
      "ID": 8,
      "MasterID": 12,
      "Title": "Payment",
      "Image": "image.png",
      "SubMenu": [
        {
          "ID": 9,
          "Title": "My Bill",
          "Image": "image.png"
        },
        {
          "ID": 10,
          "Title": "Electricity ",
          "Image": "image.png"
        },
        {
          "ID": 11,
          "Title": "Gas",
          "Image": "image.png"
        },
        {
          "ID": 12,
          "Title": "Telephone",
          "Image": "image.png"
        },
        {
          "ID": 13,
          "Title": "Water",
          "Image": "image.png"
        }
      ]
    },
    {
      "ID": 40,
      "MasterID": 14,
      "Title": "Services",
      "Image": "image.png",
      "SubMenu": [
        {
          "ID": 32,
          "Title": "Upload Slip",
          "Image": "image.png"
        },
        {
          "ID": 41,
          "Title": "SRY (Self Reliant Youth)",
          "Image": "image.png"
        },
        {
          "ID": 42,
          "Title": "Dollor Product Purchase ",
          "Image": "image.png"
        },
        {
          "ID": 43,
          "Title": "ARY Coin Redemption",
          "Image": "image.png"
        },
        {
          "ID": 44,
          "Title": "Pay Via QR",
          "Image": "image.png"
        },
        {
          "ID": 45,
          "Title": "Card Request",
          "Image": "image.png"
        }
      ]
    },
    {
      "ID": 14,
      "MasterID": 8,
      "Title": "Mobile Balance",
      "Image": "image.png",
      "SubMenu": [
        {
          "ID": 15,
          "Title": "My Mobile",
          "Image": "image.png"
        },
        {
          "ID": 16,
          "Title": "Mobilink",
          "Image": "image.png"
        },
        {
          "ID": 17,
          "Title": "Telenor",
          "Image": "image.png"
        },
        {
          "ID": 18,
          "Title": "Ufone",
          "Image": "image.png"
        },
        {
          "ID": 19,
          "Title": "Warid",
          "Image": "image.png"
        },
        {
          "ID": 20,
          "Title": "Zong",
          "Image": "image.png"
        }
      ]
    },
    {
      "ID": 46,
      "MasterID": 6,
      "Title": "Help",
      "Image": "image.png",
      "SubMenu": [
        {
          "ID": 47,
          "Title": "Call",
          "Image": "image.png"
        },
        {
          "ID": 48,
          "Title": "Chat",
          "Image": "image.png"
        },
        {
          "ID": 49,
          "Title": "Email",
          "Image": "image.png"
        },
        {
          "ID": 50,
          "Title": "Others",
          "Image": "image.png"
        },
        {
          "ID": 51,
          "Title": "VAS / SMS",
          "Image": "image.png"
        }
      ]
    },
    {
      "ID": 21,
      "MasterID": 5,
      "Title": "Fund Transfer",
      "Image": "image.png",
      "SubMenu": [
        {
          "ID": 22,
          "Title": "To Other ARY Wallet",
          "Image": "image.png"
        },
        {
          "ID": 23,
          "Title": "To Bank Account",
          "Image": "image.png"
        }
      ]
    },
    {
      "ID": 34,
      "MasterID": 1,
      "Title": "$ & MilliGold Deal",
      "Image": "image.png",
      "SubMenu": [
        {
          "ID": 35,
          "Title": "$ Deposit",
          "Image": "image.png"
        },
        {
          "ID": 36,
          "Title": "$ Purchase",
          "Image": "image.png"
        },
        {
          "ID": 37,
          "Title": "$ Time Games",
          "Image": "image.png"
        },
        {
          "ID": 38,
          "Title": "Scan for Bid",
          "Image": "image.png"
        }
      ]
    }
  ],
  "CustomerAccountInformation": []
}

请指导我如何在不同的表格单元格中使用每个JSON对象。 这是我尝试过的:

TVCell
cell.titleLabel.text = menu?.mainMenu?[indexPath.row].title ?? "Our services"

CollectionCell
cell.image.af_setImage(withURL: URL.init(string: (menu?.mainMenu?[indexPath.row].subMenu?[indexPath.row].image)!)!)

1 个答案:

答案 0 :(得分:0)

首先,在表格视图单元格中,将collectionview的标签设置为indexPath.row

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell : TVCell = tableview.dequeueReusableCell(withIdentifier: "TVCell", for: indexPath) as! TVCell
cell.myCollectionView.tag = indexPath.row
    return cell
}

现在在您的collectionview单元格中,您可以像下面一样解析数据

let index = cell.tag
cell.image.af_setImage(withURL: URL.init(string: (menu?.mainMenu?[index].subMenu?[indexPath.row].image)!)!)