基本上,我在一个滑出菜单中有一个按钮(它是自己的视图控制器,覆盖了部分Origin
屏幕,我们称之为Menu
),当按下时,执行模态转换到另一个控制器,假设为Destination
。
是否有任何方法,在按下Menu
中的按钮(前往Destination
)时,我可以将Menu
关闭回到Origin
,然后再进行转换到Destination
?
听起来很傻,但我认为我以前见过应用程序这样做。在我的情况下,希望这样做的原因是一旦我在Destination
上按“完成”,它就会将该控制器关闭回到Menu
,而我希望它只是关闭回到Origin
。我不能从Destination
执行返回到Origin
的转换。
代码:
这是我如何从Origin
打开Menu
的方式:
let interactor = Interactor()
@IBAction func openMenu(_ sender: AnyObject) {
performSegue(withIdentifier: "openMenu", sender: nil)
}
@IBAction func edgePanGesture(sender: UIScreenEdgePanGestureRecognizer) {
let translation = sender.translation(in: view)
let progress = MenuHelper.calculateProgress(translationInView: translation, viewBounds: view.bounds, direction: .Right)
MenuHelper.mapGestureStateToInteractor(
gestureState: sender.state,
progress: progress,
interactor: interactor){
self.performSegue(withIdentifier: "openMenu", sender: nil)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationViewController = segue.destination as? MenuViewController {
destinationViewController.transitioningDelegate = self
destinationViewController.interactor = interactor
destinationViewController.currentRoomID = self.currentRoomID
}
}
这是我的prepareForSegue
,从Menu
到Destination
,目前还没有什么花哨的东西:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
let inviteVC = segue.destination as! InviteVipViewController
inviteVC.currentRoomID = self.currentRoomID
}
最后,要关闭Destination
只需要简单的
@IBAction func cancelButtonPressed(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
我看到了这个问题,基本上就是我正在尝试做的事情,但不幸的是没有答案:在dismiss modal swift后执行segue
如果有人知道我在说什么,并且可以告诉我如何设置segues/prepareForSegue
使其工作,任何意见都将不胜感激!