TableView / CollectionView上的多级列表

时间:2014-05-14 14:57:19

标签: ios uitableview ios7 uicollectionview

有一个多级列表,其中一个对象可以连续拥有子对象。

  
      
  • object1
  •   
  • Object2的
  •   
  • 组   
        
    • Object4
    •   
    • 组   
          
      • object5
      •   
      • object6
      •   
      • object7
      •   
      • object8
      •   
    •   
    • Object10
    •   
  •   
  • object11
  •   
  • object12
  •   
  • object13
  •   

我需要在tableview / collectionview上显示对象的元素。

我如何在tableview / collection上显示这个结构使用

提前致谢

1 个答案:

答案 0 :(得分:1)

试着回答你的问题,而不是建议替代方案,我会建议如下:

顶级UITableView,包含两种类型的自定义UITableViewCell。第一个是标准object单元格,第二个是group cell单元格。此组单元格本身内部有UITableViewGroup Label上方UITableView

然后我会对每个UITableView使用标准object单元格,然后在其中包含UITableViewUILabel的单元格执行相同的操作。

对于heightForRowAtIndexPath:方法,我会检查indexPath处的单元格是否为对象,如果是,我想这将是标准高度。如果它是一个UITableView的单元格,我可能会调用我在自定义单元格中创建的方法,例如:

+ (CGFloat)heightForCellWithItems:(NSArray *)items
{
    CGFloat totalHeight;
    for (id item in items)
    {
        if ([item isKindOfClass:[ObjectExample class])
        {
            totalHeight += objectHeight;
        }

        else if ([item isKindOfClass:[NSArray class])
        {
            totalHeight += [self heightForCellWithItems:item];
        }
    }

    return totalHeight
}

我会为任何高度由其中的项目数量决定的单元格返回。

对于包含tableView的每个自定义单元格,我都会有一个名为items的readwrite属性,这些属性将用于填充tableView。再一次(假设你这样做的方式是使用数组中的数组)每次它到达一个数组时,它会将其传递给另一个带有tableView的嵌套单元格。

items属性的setter中,我将在单元格中的tableView上重新加载数据。