【问题标题】:Is it OK to have many nested UITableViews or is there a better way to achieve this?有很多嵌套的 UITableView 可以吗,还是有更好的方法来实现这一点?
【发布时间】: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))

如图所示:

一些重要的事情:

  1. 如果可能,我想禁用单击项目子行的功能。如果有人点击 item 2(#1) 的行,我不希望它突出显示并选择整行。我只想在有人按下该行上的 [-] 按钮时发生一些事情。 UITableViewCells 可以做到这一点吗?
  2. 我需要能够在运行时为每个项目动态添加子行。当用户按下某个项目的 [+] 按钮时,它应该在其下方添加 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


【解决方案1】:

为什么我们使用UITableView?恕我直言,主要是因为这些原因:

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

因此,根据这些观点,我会说最好只使用一个UITableView 来处理您的情况。 (不能说,你的方式不行,因为你实际上可以让它工作)

【讨论】:

    【解决方案2】:

    如果您不需要可滚动的内容,则无需使用嵌套的 TableView,而是使用部分并根据您的需要使它们可扩展和可折叠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-23
      • 2013-08-04
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      相关资源
      最近更新 更多