如何在swift中将3级数据显示在一个tableview中?

我的json数据是一个对象数组,其中对象数据的内部数组在那里直到3级。 我把第一级json数据和第二级数据放在cell中。 现在我怎么能显示在单个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": "" }, 

你可以使用UITableViewDelegate的方法tableView(_:indentationLevelForRowAt:)缩进你的第三层。 只需在委托中实现该方法,并返回例如20表示您的第三级别的行,其他行则返回0

更新 :现在我想了解你的问题。 您将不得不平坦化您的层次结构,因为表视图本身只支持2个级别。 第一级可以通过tableview部分来实现(就像你已经做的那样)。 第二和第三级可以作为行来实现,所以你必须将这些级别合并为一个:

 Pizzas Pizzas Margaritha Margaritha 9InchThin 9InchThin 12InchThin --> 12InchThin BBQBasic BBQBasic 9InchThin 9InchThin 12InchThin 12InchThin 

就Swift实现而言,我build议使用Enum来表示扁平行:

 enum ListItem { case TitleItem(TitleData) // represents 2nd-level items case DetailItem(DetailData) // represents 3rd-level items } 

TitleData是你的模型对象包含例如“Margharita”/“奶酪和西红柿”, DetailData是包含例如“9英寸薄&脆皮Margharita”/“£3,40”的模型。)

viewDidLoad:为表格中的每个部分创build一个ListItem数组:为每个标题添加TitleItem ,然后为所有嵌套细节添加TitleItem 。 从你的tableView:numberOfRowsInSection:返回该部分列表项的数量。 最后在tableView:cellForRowAtIndexPath:根据列表项的types返回一个单元格:

 let listItem = listItemForIndexPath(indexPath) switch listItem { case .TitleItem(let titleData): return titleCellWithData(titleData) case .DetailData(let detailData): return detailCellWithData(detailData) } 

其中titleCellWithDatadetailCellWithData当然应该从表视图出列可重用的单元格。