我正在尝试从一个子视图控制器导航回它的父视图控制器,然后通过按下一个按钮从该父视图控制器直接导航到另一个子视图控制器,当此操作发生时,动画需要看起来像子视图控制器导航到另一个孩子viewcontroller 但是当您点击返回时,它需要导航到父 viewcontroller。
我想到了两种方法:
• 1:从一个子视图控制器导航到另一个子视图控制器,并以某种方式更改单击后退按钮时发生的操作,以将您带到父视图控制器而不是子视图控制器。(如果你知道怎么做,它会给我同样的结果,所以请回答,)
• 2:(这是我目前拥有的)在父级中弹出当前视图控制器的委托函数,因此它将返回父级视图控制器(此参数为 BOOL),并在弹出后导航到指定位置。这很好用!但是在这个过程中你仍然可以看到父viewcontroller。我只需要它看起来像是直接从一个孩子传给另一个孩子。
附加信息:
想象 3 个视图控制器:
- VC1(可以看作是父级)
- VC1.1(VC1的子viewcontroller)
- VC1.2(也是VC1的子viewcontroller)
所以你脑海中的画面应该类似于树形图的前两层。
VC 1
/\
/ \
/ \
VC.1 VC1.2
所以我需要 VC1.1 -> VC1 -> VC1.2但是这个动作看起来应该是这样的:VC1.1 -> VC1.2当你在 VC1.2 上并单击返回时,应该显示 VC1。
我做了什么:
@IBAction func onAlreadyRegistered(_ sender: Any) {
delegate?.navigate(to: .SIGNIN, popView: true)
}
func navigate(to: VC.NAVIGATIONS, popView: Bool) {
// UIView.setAnimationsEnabled(false) // Tried disabling the animation as wll
if popView {
navigationController?.popViewController(animated: false)
}
performSegue(withIdentifier: to.abs, sender: self) // abs just returns the rawValue which is the String
UIView.setAnimationsEnabled(true)
}
然后,这将从父级弹出作为注册屏幕的当前视图控制器,然后执行登录视图控制器的序列
先感谢您!