有没有办法按下菜单中的按钮(转到目的地),我可以将菜单关闭回原点,然后转到目的地?
这听起来很傻,但我认为我以前见过应用程序.在我的情况下,想要这样做的原因是,一旦我在Destination上按下“完成”,它就会将该控制器解除回菜单,当我希望它只是关闭回原点时.我不能只是将一个segue执行回Origin from Destination.
码:
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使其工作,任何输入将不胜感激!
解决方法
在故事板中,删除通过点击菜单按钮触发的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位于导航控制器内.在那次发现之后,它起作用了.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。