用于无限导航的UINavigationController(嵌套文件夹)

时间:2016-02-28 13:22:18

标签: ios swift uinavigationcontroller storyboard

我需要浏览目录中的文件夹和文件(来自服务器)。问题是我不知道文件夹的数量,因此无法静态使用performSegueWithIdentifier。如何在swift中使用具有动态数量的视图控制器的导航控制器?我想"推"每当用户点击一个文件夹以列出其中的文件/文件夹时,我就会使用新的视图控制器,我想用UINavigationController进行操作,这样用户就可以回到"之前的"按钮。

故事板和编程方法都可以。

谢谢你

2 个答案:

答案 0 :(得分:3)

故事板和赛段只是一个拐杖。想想如果没有它们你会怎么做。在每个级别,要进入某个级别,您只需实例化一个新的视图控制器并将其推送到导航控制器堆栈yourAdapter.notifyDataSetChanged();

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instm/UINavigationController/pushViewController:animated

实际上它只需要一个视图控制器类来执行此操作,因为任何实例都可以创建并推送其自己的类的另一个实例。一个文件夹的显示与任何其他文件夹的显示完全相同。

因此,如果你想在故事板中配置这个概念,你就会有一个圆形的segue,也就是说,视图控制器会有一个push / show segue导致本身

答案 1 :(得分:0)

我同意@ matt的回答,只需创建控制器并推送即可。为了完整起见,您可以在带有segue的故事板中执行此操作。

以下是:

  1. 这样您就可以通过编程方式调用 ,在tableView中添加一个原型单元格。 (你这样做是因为你不希望在选择tableViewCell时自动触发segue。通过使用一个额外的原型单元,segue可以连线,但它永远不会自动触发,因为这个原型单元实际上永远不会实例化。)
  2. Control -drag从此原型单元格到tableViewController顶部的viewController图标。从弹出窗口中选择"Show"
  3. 文档大纲视图中找到此segue,并在属性检查器中为其指定"showFolderSegue"标识符。
  4. 现在,当您想要触发segue时,请致电:self.performSegueWithIdentifier("showFolderSegue", sender: self)
  5. 您可以像往常一样使用prepareForSegue设置新的tableViewController。
  6. 此方法也适用于单个tableViewController。