如何快速维护视图层次结构

Posted

技术标签:

【中文标题】如何快速维护视图层次结构【英文标题】:How to maintain view hierarchy in swift 【发布时间】:2016-12-15 10:30:14 【问题描述】:

假设我有 3 个视图控制器:VC1、VC2、VC3。 正常流程是 VC1 连接到 VC2,VC2 连接到 VC3。用户可以选择从 VC3 展开到 VC2。但是,在一个特定实例中,VC1 会推送到 VC3。在这种情况下,对 VC2 的 unwind segue 不起作用。我会假设因为 VC2 永远不会被添加到 VC 堆栈中。还有哪些其他替代方法可以执行以下操作:VC1->VC3->VC2。当推送到更下游的视图控制器时,是否有将链中的所有视图控制器添加到堆栈中? 谢谢

【问题讨论】:

使用可以直接从VC3到VC1使用unwind segue。在VC1中编写方法(和VC2中写的类似),并连接VC3的出口 我需要从 VC3 到 VC2 直接从 VC1 到 VC3 之后 您也可以以编程方式执行转场。当 unwind segue(VC3 到 VC1)发生时,您可以执行另一个 segue(VC2 到 VC3)。 【参考方案1】:

我在我的应用上使用了以下方法,效果很好。

vc2.navigationController.pushViewController(vc3, animated: true) vc1.navigationController?.pushViewController(vc2, animated: true)

【讨论】:

我已经尝试过类似的方法,现在看来可行。我只是将所有必要的 VC 推入堆栈。我不知道这是否是最有效的解决方案

以上是关于如何快速维护视图层次结构的主要内容,如果未能解决你的问题,请参考以下文章

将视图层次结构旋转 90 度

CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触视图

为视图释放支持层以回收内存?

界面视图。如何快速找到根 SuperView?

生产力应用导航层次结构中的分页视图

如何使用自动布局动画视图更改视图层次结构?