【发布时间】:2018-08-02 03:25:13
【问题描述】:
我想做一个这样的菜单布局:
- 所有类别都可以折叠
- 单击类别行将展开/折叠该类别中的项目
- 单击项目行将在下面的行中动态添加该项目的副本
- 单击项目行上的 [-] 按钮将删除该行
我考虑过使用这种层次结构:
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))
如图所示:
一些重要的事情:
- 如果可能,我想禁用单击项目子行的功能。如果有人点击 item 2(#1) 的行,我不希望它突出显示并选择整行。我只想在有人按下该行上的 [-] 按钮时发生一些事情。 UITableViewCells 可以做到这一点吗?
- 我需要能够在运行时为每个项目动态添加子行。当用户按下某个项目的 [+] 按钮时,它应该在其下方添加 1 个项目子行(我认为这作为 UITableViewCell 是有意义的)。
这么多嵌套的 UITableView 和 UITableViewCell 有意义吗?这是实现这样的布局的最合适的方法吗?我提议的层次结构是否适合这种设计?
编辑:
如果我只使用 1 个 UITableView 和 3 种类型的单元格,我能实现我需要的功能吗?我可以添加行,然后折叠类别,然后再次展开类别(添加的行仍然存在),然后删除单元格吗?
【问题讨论】:
-
你可以只创建多种cell,然后按需添加/删除它们,动画会让它看起来像折叠,它应该比嵌套tableView更好,扩展tableView教程已经结束了。
-
在
TableViewCell中使用TableView对于您的特定情况来说似乎有点过分了。我的建议是使用自定义UITableViewCell。至于您的第一个问题,您可以通过在单元格内创建Button并将您的逻辑移动到该按钮的touchUpInside而不是该单元格的didSelectRow来实现该功能 -
@Tj3n 这是有道理的。我曾假设每种单元格都需要自己的 TableView。 1 TableView 用于具有 3 种单元格的所有内容更有意义。
-
看起来像一个 TreeTableView
-
不要使用嵌套表格视图。小区管理难度很大
标签: ios swift xcode uitableview