- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
基本上,我在滑出式菜单中有一个按钮(它是它自己的 View Controller ,覆盖了 Origin
屏幕的一部分,我们称它为 Menu
),它,按下时,执行到另一个 Controller 的模态转场,比方说 Destination
。
有没有什么方法可以在按下 Menu
中的按钮(转到 Destination
)后,让我关闭 Menu
回到 Origin
,然后转到 Destination
?
这听起来很傻,但我认为我以前见过应用程序做过的事情。在我的例子中,想要这样做的原因是,一旦我在 Destination
上按下“Done”,它就会将该 Controller 解雇回 Menu
,当我想要它时返回 Origin
。我不能只执行从 Destination
返回到 Origin
的 segue。
代码:
这就是我从 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
}
}
这是我目前从 Menu
到 Destination
的 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/prepareForSegue
以使其工作,那么任何输入都可以不胜感激!
最佳答案
基于对 this answer 的修改,以下应该有效:
在您的 Storyboard中,删除通过点击菜单按钮触发的转场并转到目的地。
创建一个从 Origin View Controller 到 Destination View Controller 的新 segue。此 segue 将手动执行。
当您在菜单中选择目标选项时,让菜单自行关闭,然后在 Origin 上执行目标转场,如下所示:
// 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)
}
当 Destination 被关闭时,您应该看到 Origin,而根本看不到 Menu。
我在一个示例应用程序中对此进行了测试,其中“菜单”不是滑出,而是一个完整的模态视图 Controller ,它对我有用。
编辑:在使用@KingTim 进行故障排除时,他发现我们需要将 segue 从 UINavigationController
连接到 Destination,而不是 Origin。这是因为 Origin 在导航 Controller 中。在那个发现之后,它奏效了。
关于ios - 在发送者 View Controller 被解除后执行 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43527014/
如何确定操作表何时已关闭或已被驳回? 我关注了这个主题Fitting a UIDatePicker into a UIActionSheet并向操作表添加了选择器 View 。但是,当操作表仍处于打开
在关闭 UIActivityViewController 后如何调用操作?例如,如果我想在用户关闭 UIActivityViewController 后更改一段文本。 谢谢大家! 最佳答案 使用它的完
我的代码中有以下几行: func searchBarTextDidBeginEditing(searchBar: UISearchBar) { searchBar.showsCancelBut
像这样使用 UIAlertController 时: var alert = UIAlertController(title: "Core Location", message: "Loca
我正在使用 UITableViewController 来显示要编辑的项目列表。点击一行后,用户将转到 View Controller 以编辑数据。 当他们通过默认 <(后退)按钮退出编辑屏幕时,我想
我有一个自定义的 UIImagePickerController ,它工作得很好,只是我面临一个我认为应该相当简单的问题 - 我只是还没有找到解决方案。 触摸我自定义添加的“照片”按钮后,我将其定位到
我在显示 UIMenuController 的表格 View 单元格上实现了一个长按手势识别器,当菜单显示时,相应的表格 View 单元格被选中,这是我的要求。但问题是当我触及 UIMenuContr
我有: df = pd.DataFrame({'col1': ['asdf', 'xy', 'q'], 'col2': [1, 2, 3]}) col1 col2 0 asdf 1
我正在尝试解除实时事件的绑定(bind)(已尝试使用 .live 和 .delegate)。 当我想解除绑定(bind)时,我有 3 个不同的选项:解除绑定(bind) "click"、解除绑定(bi
我正在使用 spock、geb 和 WebDriver 编写测试脚本。该脚本在不安全的页面上提交表单。该页面提交到安全的 HTTPS URL。 Firefox 对此显示警告,特别是: 这会导致以下错误
我有两个 s 和每个 ng-repeat,但都对其子元素执行相同的操作,如下所示: {{item.name}} {{item.name}} 想象一下,有两种类型的数据集,要渲染
我构建了一个通过 APIHiJack 连接到 Win32 TextOut 函数的应用程序。当应用程序启动时,DLL 将按预期注入(inject),并且我的新 TextOut 函数被成功调用。 目前,关
我遇到了一次非常奇怪的崩溃,这是回溯。 * thread #1: tid = 0x2403, 0x3379516c CoreFoundation`CFHash + 8, stop reason = E
我有一个 FirstViewController 和一个 SecondViewController。它们的 UINavigationBar 有不同的颜色。当我显示 SecondViewControll
抱歉,如果我在文档中遗漏了一些内容,但无论如何我都找不到阻止在 SweetAlert 2 中关闭对话框的方法,这些将不起作用: await Swal.fire({
有没有人见过这个?在 iPad 模拟器中,我有一个 About View Controller 。我想以模态方式呈现它,并让用户单击关闭按钮。 更复杂的是,我有一个主视图 Controller ,它显
我有 3 个 View Controller - BaseViewController->AviewController->BviewController。 AviewController 以模态方式
如果我在对象上有一个事件聚合器, eventAggregator: _.extend({}, Backbone.Events), 对于模态视图,我基本上让模态视图的呈现者监听模态视图的事件。 this
我有几个 View Controller 。如果 Alert View 被确认,我需要返回到第一个 View Controller。如果没有 unwind Segue,我会这样做: @IBAction
我有一个为 SharePoint 编写的 Accordion 菜单: parent.click(function(event) { event.preventDefault(); va
我是一名优秀的程序员,十分优秀!