【问题标题】:Use existing unwind segue from another action从另一个动作中使用现有的 unwind segue
【发布时间】:2018-02-11 20:15:19
【问题描述】:

我有两个按钮——“Ok”和“Delete”,“Ok”将segue展开到最后一个ViewController。

我希望“删除”按钮启动相同的展开转场,但要事先执行一些操作。 (就我而言,从 Firebase 中删除信息)。

如何将动作和展开转场结合起来?我尝试调用 PerformSegueWithIdentifier 函数,但没有成功。

【问题讨论】:

    标签: ios swift xcode button unwind-segue


    【解决方案1】:

    通过control创建第二个unwind segue - 从您的Delete 按钮拖动到Exit 图标。您甚至可以在目标视图控制器中使用现有的@IBAction。给这个 segue 一个标识符(在 Document Outline 视图中选择 segue 并在 Attributes Inspector 中设置标识符),例如 "deleteSegue",然后在 prepare(for:sender) 中检查标识符并从 Firebase 中删除信息。

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "deleteSegue" {
            // delete data from Firebase
        }
    }
    

    来自 cmets 的后续问题:

    我想在展开 segue 之前执行一个动作 - 我想要一个 弹出窗口询问用户是否真的要删除该项目。只要 之后,我希望删除该项目并继续展开。

    不是从 Delete 按钮连接展开转场,而是将其从 VC 顶部的 viewController 图标连接到 Exit图标。仍然给它一个标识符,然后当你想执行 segue 时调用performSegue(withIdentifier: "deleteSegue", sender: self)

    【讨论】:

    • 我稍后会尝试这个,我刚刚遇到了一个我正在尝试调试的致命错误。我删除了一个 .swift 文件,并将视图的类从已删除的文件更改为另一个文件,我看到它在加载该视图时崩溃了......有什么想法是什么原因造成的吗?
    • 可能是您缺少插座连接。检查控制台是否有消息。您可能想在断点检查器中添加一个异常断点。
    • 我需要学习使用调试控制台 :) 我对 Xcode 还很陌生,所以我还在学习调试技巧。我忘了给我的 UICollectionViewCell 一个标识符。哎呀!现已修复 :) 让我试试你的解决方案来解决我的问题
    • 好的,我再次阅读了您的解决方案,但出现了问题。我想在展开 segue 之前执行一个操作 - 我想要一个弹出窗口询问用户他是否真的想删除该项目。只有在那之后,我才希望删除该项目并继续展开。
    • 不是将unwind segue 从Delete 按钮连接起来,而是从VC 顶部的viewController 图标连接到退出图标。仍然给它一个标识符,然后当你想执行 segue 时调用performSegue(withIdentifier: "deleteSegue", sender: self)
    猜你喜欢
    • 1970-01-01
    • 2016-10-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多