在Interface Builder中创建导航堆栈的第二级集合?

时间:2016-02-17 17:21:30

标签: ios uinavigationcontroller uicollectionview

我试图制作导航堆栈的第二个CollectionView部分,但无法让IB执行此操作。我的应用程序有一个UINavigationController,它使用UITableViewController列出项目,让用户选择一个Project。 Project单元格有一个公开指示符,该指示符与UICollectionViewController相关,允许多个选择。

我已经添加了" next" BarButton应该打开另一个只包含所选项目的集合,我的目标是允许通过调出详细视图来编辑属性来编辑每个项目,最后编辑Project属性并在完成后回退到表格。这是层次结构:

UINavigationController
 Project Table
 ..Collection Select multiple items from Global set
 ....Collection of chosen items (each editable)
 ......Edit Panel for One item (has Back button)
 ......Edit Panel for misc. Project attrs (Done button rewinds to table) 

问题是我可以从表中添加第一个集合,它有一个导航栏并按预期工作,但是当我添加第二个集合时,我无法添加导航项或导航栏,以及当我设置它覆盖屏幕并且没有导航栏并且没有连接到前一个视图的导航堆栈。

我查看了Apple的示例代码,我发现SamplePhotoApp做了类似的事情,但当我尝试通过添加NavigationItem来模仿他们的方法时,它会变得不可见或被绘制为故事板中的单独视图。当我运行应用程序时,我无法使用显示在UI层次结构中的任何位置找到对象,即使它显然在故事板中。它只是没有连接到任何东西,我也找不到一种方法来连接它。

那么,如何将我的导航堆栈扩展到第一个集合视图之后呢?

THUS FAR :为了解决方法,我已经插入了常规ViewController来代替集合,添加了NavigationItem和ContainerView。现在,集合的segue指向新的ViewController,并且默认的嵌入segue已经指向旧的CollectionViewController,并且IB添加的虚拟视图被丢弃了。我需要输入一些代码来使用self.childViewControllers通过新的ViewController传递数据,我不再获得漂亮的布局默认值,但这看起来像是解决了从第一个集合到第二个集合的问题。我仍然需要修补一些东西,并为两个编辑面板完成导航堆栈的其余部分,并找出如何在不工作的情况下一直进行倒带,因此使用IB的真正解决方案会好多了。

2 个答案:

答案 0 :(得分:0)

听起来好像你没有在导航堆栈上推送第二个UICollectionView。 请仔细检查您的segue是否正在使用" Push"而不是莫代尔。

答案 1 :(得分:0)

如上所述,最佳答案是插入常规ViewController代替集合,添加了NavigationItem和ContainerView。 Container指向我的集合并以典型方式使用segue管理堆栈。倒带segue确实倒回到视图控制器,好像它是“正常”完成的,因此没有什么特别的事情要做。需要注意的一个小问题是确保使用适当的IBAction管理NavBar按钮,或检测通过segue的动作,因为将调用其中一个,而不是两者。