有没有办法按下菜单中的按钮(转到目的地),我可以将菜单关闭回原点,然后转到目的地?
这听起来很傻,但我认为我以前见过应用程序.在我的情况下,想要这样做的原因是,一旦我在Destination上按下“完成”,它就会将该控制器解除回菜单,当我希望它只是关闭回原点时.我不能只是将一个segue执行回Origin from Destination.
码:
这是我从Origin打开菜单的方法:
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,没什么特别的:
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)}
我看到这个问题基本上就是我要做的,但不幸的是没有答案:Performing segue after dismissing modal swift
很抱歉,如果这听起来令人困惑,但如果有人知道我在说什么,并且可以让我知道如何设置segues / prepareForSegues使其工作,任何输入将不胜感激!
解决方法 根据对 this answer的修改,以下内容应该有效:在故事板中,删除通过点击菜单按钮触发的segue并转到目标.
创建一个从Origin视图控制器到Destination视图控制器的新segue.这个segue将手动执行.
在“菜单”中选择“目标”选项后,让“菜单”自行关闭,然后在“原点”上执行“目标”,如下所示:
// This code goes in Menu,and you should call it when // the menu button is tapped. // // presentingVIEwController is Origin weak var pvc = self.presentingVIEwController self.dismiss(animated: true) { // Menu has been dismissed,but before it is destroyed // it calls performSegue on Origin pvc?.performSegue(withIDentifIEr: "openDestination",sender: nil) }
当目的地被解雇时,您应该看到Origin,而根本没有看到菜单.
我在一个示例应用程序中对此进行了测试,其中“菜单”不是幻灯片,而是一个完整的模态视图控制器,它对我有用.
编辑:在使用@KingTim进行故障排除时,他发现我们需要将来自UINavigationController而不是Origin的segue连接到Destination.这是因为Origin位于导航控制器内.在那次发现之后,它起作用了.
总结以上是内存溢出为你收集整理的ios – 在发送方视图控制器被解除后执行segue全部内容,希望文章能够帮你解决ios – 在发送方视图控制器被解除后执行segue所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)