【问题标题】:Implementing UITableView Tree Structure实现 UITableView 树结构
【发布时间】:2011-07-13 00:46:51
【问题描述】:

我正在尝试设置一个UITableView 来显示嵌套的线程项。我正在使用 Core Data 和 NSFetchedResultsController,但不确定我的方法应该是什么。我想显示这样的信息:

  • 项目 #1
    • 项目 #1.1
    • 项目 #1.2
    • 显示全部
  • 项目 #2
    • 项目 #2.1
    • 项目 #2.2
    • 显示全部

在上面,每个子部分都有一个“显示全部”按钮,单击该按钮时将替换为其他子项(上面的每个项目符号都是一个表格视图单元格)。有人做过类似的事情并有任何方法提示吗?谢谢。

【问题讨论】:

  • 你会像#1.1.1那样有更深的层次吗?
  • @Salcedo 目前没有计划支持多于一层的嵌套。
  • 是节点例如Item #1和叶子例如item#1.1 是同一个实体还是属于两个不同的实体?
  • @TechZen 他们是同一个实体。

标签: iphone cocoa-touch core-data


【解决方案1】:

我不会费心尝试将 NSFetchedResultsController 塞进它不是为它创建的模式中。 FRC 没有对嵌套表的内在支持,我认为破解它来做一个嵌套表比编写一个自定义 tableview 控制器来处理问题需要更多的工作。如果您的表格将显示来自两个或更多实体的对象,那就更是如此。

此外,我会告诫不要在手持移动设备上使用嵌套表格。 iPhone 屏幕将只显示大约 11 个标准大小的行。因此,根据上面的示例,您在任何时候都只会看到两个或三个节点标题。更糟糕的是,如果您的节点有超过 11 个叶子,您将只看到一个叶子屏幕,并且 tableview 的分层性质将被伪装。

在大多数情况下,表视图的层次结构,每个视图都显示在一个单独的级别上,几乎总是最好的设计。

【讨论】:

  • 是的,对于 OP,我建议尽可能简单。
【解决方案2】:

您可以使用部分标题来拆分列表,标题是项目名称。所有项目都可用,您只需一次滚动浏览它们。由于您只需要一级缩进,这可能对您很有效。

我在一个名为 GoTasks(从应用商店免费下载)的应用程序中看到了子项目的非常有效的使用,它将子任务显示为多个缩进,(尽管没有折叠),我认为它非常有效,甚至没有我 iPhone 上的屏幕空间。不幸的是,我的 iPhone 开发经验不足以告诉你这是如何完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多