在Swift 4中创建嵌套的分层导航

问题描述

我有一个正在使用的应用程序,要求用户浏览该应用程序的根文件夹中存储的文件。我想使用一种类似于iOS上的设置工具的导航样式,其中有一个项目列表,然后单击一个项目,然后使用后退按钮弹出另一个项目列表,以此类推,直到结束为止。 / p>

在递归的情况下,我似乎找不到任何有关如何执行此操作的示例。

导航应如下所示:

- Learning Swift
  - Monday
    - How to read files
      - material1.pdf
      - material2.pdf
  - Tuesday
    - Using UI Controllers
      - material3.pdf
- PHP
  - Thursday
    - material4.csv
    - material5.pdf
- Ruby
  - Saturday
    - Using Models
      - Help Materials
        - material6.pdf
      - Code Samples
        - config.rb
        - controller.rb
      - material7.pdf

没有设置的文件夹结构,因此我需要它能够动态生成。每当用户访问应用程序的这一部分时,我将从设备上的应用程序存储目录中读取文件夹结构。

谢谢

解决方法

您可以像“设置”应用程序,“文件”应用程序,“电话”应用程序以及将导航推入层次结构的任何其他应用程序一样进行操作。

您有一个UINavigationController,该UINavigationController的根视图控制器显示一个表视图,您可以在其中列出导航 root 处的文件夹。用户通过点击选择一个,然后创建另一个视图控制器,该控制器显示一个表视图,在其中列出该文件夹中的文件/文件夹,然后将其到导航控制器上,依此类推,递归地进行。因此,侧向总是较深一级(或使用“后退”按钮较浅)。在用户点按之前,您不会创建和填充下一级别的内容,此时,您只需拿起所需的信息(此文件夹中的内容)并显示它即可。

另一个选择是将有关文件夹的整个层次结构显示为轮廓,即带有缩进的单个滚动表视图。在iOS 14中,您甚至可以拥有一个轮廓,其外观类似于Finder中的列表视图,并带有用户可以在列表中打开的文件夹。