有很多嵌套的UITableViews可以吗?或者有更好的方法来实现此目的?

时间:2018-08-02 03:25:14

标签: ios swift xcode uitableview

我想要这样的菜单布局:

enter image description here

  • 所有类别都可以折叠
  • 单击类别行将展开/折叠该类别中的项目
  • 点击某个项目行将在下面的行中动态添加该项目的副本
  • 单击项目行上的[-]按钮将删除该行

我已经考虑过使用此层次结构:

UITableView (Whole menu)
-UITableViewCell (Each Category, for example Category 3)
 -UITableView (Each Category, for example Category 3)
  -UITableViewCell (Category items, for example item 2)
   -UITableView (Category items, for example item 2)
    -UITableViewCell (item sub-rows, for example item 2(#1))

如下图所示:

table/cell layout diagram

一些重要的事情:

  1. 如果可能的话,我想禁用单击项目子行的功能。如果有人点击项目2(#1)的行,我不希望它突出显示并选择整个行。我只希望当某人按下该行上的[-]按钮时发生一些事情。 UITableViewCells是否可能?
  2. 我需要能够在运行时为每个项目动态添加子行。当用户按下某个项目的[+]按钮时,应在其下方添加1个子行(我认为这对于UITableViewCell来说是有意义的)。

这么多嵌套的UITableViews和UITableViewCells是否有意义?这是实现这样的布局的最合适方法吗?我提议的层次结构对于这种设计是否准确?

编辑:

如果仅使用1个UITableView和3种类型的单元格,是否可以实现所需的功能?我可以添加行,然后折叠类别,然后再次扩展类别(添加的行仍将存在),然后删除单元格吗?

2 个答案:

答案 0 :(得分:1)

我们为什么使用UITableView?恕我直言,主要是由于以下原因:

  1. 它是可滚动的(嵌套的不需要)
  2. 使用表格视图,可以轻松显示具有相同样式的动态视图列表(对于一个表格视图就足够了)
  3. 它允许通过重用单元格来使用更少的资源(与在提供的@ Tj3n相同的表视图中使用其他类型的单元格相比,在嵌套表视图的情况下,它的帮助要小得多)

因此,根据以上几点,我认为对于您的情况最好使用一个UITableView。 (不能说,您的方法不正确,因为您实际上可以使它起作用)

答案 1 :(得分:0)

如果您不需要可滚动的内容,则无需使用嵌套的TableView,而应使用节并将其根据需要进行扩展和折叠。