我的json数据是一个对象数组,其中对象数据的内部数组直到3个级别。我在单元格中获取了第一级json数据,在单元格中获取了第二级数据。现在如何在单个tableview中显示第三级数据?
你可以在这里看到屏幕截图
到现在为止只完成了两个级别。我需要像第二级一样显示第三个标签..
我的json数据..
[
{
"id": "244",
"name": "PIZZAS",
"image": "",
"coupon": "1",
"icon": "",
"order": "1",
"aname": "",
"options": "2",
"subcategory": [
{
"id": "515",
"name": "MARGARITA",
"description": "Cheese and Tomato",
"image": "",
"icon": "",
"coupon": "1",
"order": "1",
"aname": "",
"options": "2",
"item": [
{
"id": "1749",
"name": "9 Inch Thin & Crispy Margarita",
"description": "",
"price": "3.40",
"coupon": "1",
"image": "",
"options": "2",
"order": "1",
"addon": "495",
"aname": "",
"icon": ""
},
答案 0 :(得分:0)
您可以使用UITableViewDelegate
方法tableView(_:indentationLevelForRowAt:)
缩进第3级。只需在您的委托中实现该方法并返回,例如20
代表您的第3级行,0
代表所有其他行。
更新:现在我想了解您的问题。您必须展平您的层次结构,因为表视图本身仅支持2个级别。第一级可以通过tableview部分实现(就像你已经做的那样)。然后,第二级和第三级可以实现为行,因此您必须将这些级别折叠为一个:
Pizzas Pizzas
Margaritha Margaritha
9InchThin 9InchThin
12InchThin --> 12InchThin
BBQBasic BBQBasic
9InchThin 9InchThin
12InchThin 12InchThin
就Swift实现而言,我建议使用Enum来表示扁平行:
enum ListItem {
case TitleItem(TitleData) // represents 2nd-level items
case DetailItem(DetailData) // represents 3rd-level items
}
(TitleData
是您的模型对象包含例如“Margharita”/“Cheese and Tomato”,DetailData
是包含例如“9英寸薄和脆皮Margharita”/“£3,40”的模型”。)
在viewDidLoad:
中为表格中的每个部分创建一个ListItem
数组:为每个标题添加TitleItem
,然后为所有嵌套详细信息添加DetailItem
s。从tableView:numberOfRowsInSection:
返回该部分中的列表项数。最后在tableView:cellForRowAtIndexPath:
中返回一个单元格,具体取决于列表项的类型:
let listItem = listItemForIndexPath(indexPath)
switch listItem {
case .TitleItem(let titleData): return titleCellWithData(titleData)
case .DetailData(let detailData): return detailCellWithData(detailData)
}
...其中titleCellWithData
和detailCellWithData
当然应该从表格视图中将可重复使用的单元格出列。