2016-02-28 78 views
0

我需要浏览目录中的文件夹和文件(从服务器)。问题是我不知道文件夹的数量,因此无法静态使用performSegueWithIdentifier。如何在swift中使用动态数量的视图控制器的导航控制器?每次用户点击一个文件夹以列出其中的文件/文件夹时,我想要“推”一个新的视图控制器,并且我想用UINavigationController来做到这一点,以便用户有可能返回“上一个”按钮。用于无限导航的UINavigationController(嵌套文件夹)

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

谢谢你

回答

3

故事板和segues只是一个拐杖。想想如果没有他们,你会怎么做。在每个级别,为了降低级别,您只需实例化一个新的视图控制器并使用pushViewController:animated:将其推入导航控制器堆栈。

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

而事实上,只需要一个视图控制器类要做到这一点,因为任何情况下可以创建和推动其自己的类的另一个实例。一个文件夹的显示与其他显示完全相同。

所以,如果你想在故事板中配置这个概念,你将会有一个圆形的继续,也就是说,视图控制器将有一个推动/显示继续,导致本身

+0

谢谢你,那就对了。我解决了推视图控制器的新实例! –

0

我同意@ matt的回答,刚创建控制器并推即可。为了完整性,您可以在中使用segue在Storyboard中执行此操作。

方法如下:

  1. 所以,你可以调用SEGUE 编程,附加原型细胞添加到您的tableView。 (你这样做是因为你不希望在选择tableViewCell时自动触发segue,通过使用额外的原型单元,segue可以被连接起来,但它永远不会被自动触发,因为这个原型单元永远不会实际)
  2. 控制 - 从此原型单元格拖到tableViewController顶部的viewController图标。从弹出窗口中选择"Show"
  3. 中找到这个segue文档概述视图并在属性检查器中给它一个标识符,如"showFolderSegue"
  4. 现在,当您想要触发暂停时,请致电:self.performSegueWithIdentifier("showFolderSegue", sender: self)
  5. 您可以像平常一样使用prepareForSegue来设置新的tableViewController。

该方法也适用于单个tableViewController。

+0

其实我以编程方式做了,但是我遇到了一个问题。我的班级有一个我在表格视图中显示的对象列表。当用户点击一个文件夹时,我实例化一个新的视图控制器,并将其推入导航控制器中。现在,当你使用“返回”按钮时,包含对象的数组结果不正确,它不包含之前的对象列表!你有什么主意吗?我的代码是: let storyBoard = UIStoryboard(name:“main”,bundle:nil) let vc = storyBoard.instantiateViewControllerWithIdentifier(“id”)as! CustomVC vc.listOfFiles = sefl.listOfFiles –

+0

这听起来对我来说是正确的。如果它继续混淆你,这听起来像是一个新问题的好话题。 – vacawama