【问题标题】:Unwind segue function with Back button使用 Back 按钮展开 segue 功能
【发布时间】:2015-05-28 00:02:33
【问题描述】:

当我在导航控制器中按下默认返回按钮(例如 )时,我正在尝试调用函数。

在其他情况下,我正在创建自定义按钮,在我按 Ctrl+拖动到 XCode 中的红色退出按钮并将其指向选择 segue 之后。

现在我需要使用导航控制器的默认后退按钮,但我无法设置将其分配给 segue 动作,因为它在 Storyboard 视图中没有后退按钮(但它存在于模拟器中)。

模拟器:

X代码:

我可以在导航控制器中创建自定义按钮并将其分配为自定义展开segue,但是如果没有“

我在 stackoverflow 上找到了一些答案,但它们都是用 Objective-C 编写的 :(.

【问题讨论】:

    标签: ios swift segue


    【解决方案1】:

    您可以使用委托方法来完成您正在做的事情。

    这里是一个真正深思熟虑的处理委托和转场的快速教程: http://makeapppie.com/2014/07/05/using-delegates-and-segues-part-2-the-pizza-demo-app/

    你所问的,捕捉后退按钮动作的能力,不可能像你描述的那样。

    大多数人会建议创建一个自定义按钮,然后使用 unwind segue。

    有很多关于自定义后退按钮的教程以防万一您不熟悉 swift,并且自定义后退按钮的丑陋部分可以通过在其中放置自己的箭头来轻松修复。

    我还发现了这个先前提出的问题以供将来参考:Unwind segue from navigation back button in Swift

    【讨论】:

    • 使用委托方法,一切正常。 “返回”按钮我在该类中使用 viewWillDisappear 捕捉,并从 viewWillDisappear 调用我的委托方法。我只有返回选项,所以我可以使用 viewWillDisappear。
    【解决方案2】:

    实际上我只是将 unwind segue 分配给整个视图控制器(从黄色视图控制器出口右键单击并拖动到出口出口然后选择功能)。到目前为止效果很好。无需自定义按钮,无需委托。 事实上,在我的项目中,孩子应该根据当前的调用者视图控制器调用不同的父函数,只需使用相同的函数名就可以实现我的梦想。

    这个页面对我帮助很大:http://spin.atomicobject.com/2014/12/01/program-ios-unwind-segue/

    【讨论】:

    • 我试图完成同样的事情,但我一定是做错了什么。你能帮助我吗?在第一个 VC 中,我宣布了 unwind IBAction。然后,在 IB 中,我右键单击从第二个视图控制器(甲板上的黄色图标)拖动到退出图标(在同一个甲板上),然后从第一个 VC 中选择我的展开 IBAction。但是,当我点击第二个 VC 上的后退导航按钮时,它不会被调用。有什么想法吗?
    • @maganap:我所做的是以编程方式使用 performSegueWithIdentifier 方法(黄色退出),我需要在对象操作中调用 performSegueWithIdentifier。但是,您只需要右键单击 -> 从您的按钮拖动到 Exit 并选择您的操作 segue。看我放在github上的示例:github.com/smozgur/Unwind-Segue
    • 哦,是的,我可以从一个对象中做到这一点。但是,随着@YichenBman 的问题,我想要做的是当 默认后退按钮 在 VC2 中被点击时将数据传回 VC1,这似乎不允许其动作被捕获。我最终触发了 VC2 viewWillDisappear 中的 segue,它确实触发了 VC1 中的展开操作。但这肯定不是正确的方法,因为导航已经被触发,我不应该在那里调用 segue。非常感谢您的帮助:)
    • @maganap,您可以改用 UINavigationControllerDelegate 并将 navigationController.delegate 设置为 VC2 viewDidLoad 中的 self 并在 navigationController 中将数据传回 VC1(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool)功能。我更新了我的示例代码 - 它可能会有所帮助。
    猜你喜欢
    • 2018-08-11
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多