我已经看到了关于如何回到以前的View控制器的太多线程,这使得感觉很容易实现 . 但就我而言,只有一种并发症 . 考虑以下情况 .
-
VC1 --Opens--> VC2: vc2是一个显示Form的viewcontroller . 在正确填充时,用户被带到另一个VC . 称之为vC3
-
VC2 --Opens--> VC3: vc3是一个视图控制器,可以获取刷卡信息,如果提供的信息正确,则需要VC4
-
VC3 --Opens--> VC4: .
VC4是视图控制器,它加载所有用户联系人并将信息/数据发送到所选联系人 . 到目前为止还可以 . 现在有2个条件,如果我发送的数据被正确发送,那么我必须直接回到VC1,如果没有发送数据,那么我必须直接回到vc2再次获取信息 .
那么处理这种情况最好的是什么呢 . 请建议 .
UPDATE:
我正在使用Tab bar控制器,在该View之一的控制器下,我正在打开其他的VIew控制器 . 就像这个打开VC3的Open VC2一样......
This is how I am showing my ViewController 2
let myVC2 = self.storyboard?.instantiateViewController(withIdentifier: "idMyVC2") as MyVC2
myVC2.modalPresentationStyle = .fullScreen
self.present(myVC2,animated : true)
2 回答
你可以用各种方式做,一个如下: -
视图控制器的层次结构如下: -
NavigationController - > VC1 - > VC2 - > VC3 - > VC4(使用push) . 现在使用下面的代码更改你的控制器
如果pop到root使用: -
如果对于pop进入VC3只需弹出到root .
我希望它能帮助你,
谢谢
将它插入游乐场并乱用它:
设置非常基本,每个视图控制器都通过委托链接 . 因为有多个视图控制器,所以我们创建了一个协议 . 该协议只是一个采用整数参数的方法,该参数是应该执行解除的视图控制器(呈现视图控制器) . 然后,当你想要执行解雇时,调用委托(不必是来自第5个视图控制器),指定呈现视图控制器,委托将沿链向下检查它是否是呈现视图控制器(如果它是,它将解除它上面的所有内容)或不(如果不是,它将逐步关闭一个视图控制器并重复该过程) .
VC5
有一个名为dismissStack(at:)
的方法,它允许您输入要忽略的视图控制器的整数 . 因此,如果您在2处解雇,则视图控制器3,4,5将被解除 . 显然,您也可以将此方法放入其他视图控制器中 .