segue 关闭时执行操作

Perform action when segue is closed

我有一个 ViewController,我在其中调用 segue 到另一个 ViewController:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == blogSegueIdentifier {
            let destination = segue.destination as! Reply
            let path = tableView.indexPathForSelectedRow
            let cell = tableView.cellForRow(at: path!) as! QuestionsTabCell
            destination.blogName = String(cell.labelQues!.tag)
        }
    }

在打开的segue (ViewController) 中,UINavigationBar 中有一个UITextView 和一个发送按钮。所以用户输入 textView 并将其发送到服务器点击按钮,然后在打开的 segue (ViewController) 关闭后用户 returns 到第一个 ViewController。如何在用户关闭 segue 而不使用 viewWillAppear 时首先调用方法 ViewController?

你好@Mr Jo 您可以为此目的使用 unwind segue。

在您的第一个 viewController 中声明一个方法:-


    //MARK: - - Unwind Segue get data from select categories
    @IBAction func unwindToAssignCatController(segue: UIStoryboardSegue) {

        //get back data from selectcategory class
        if segue.identifier == "segueIdentifier"{

            let controller = segue.source as! Reply
            // get your values from second viewController and use in first viewController
        }


之后你必须 select 你的第二个 ViewController

1: 右击Controller,拖拽退出,会出现下面的方法 2:Select它并为其分配一个标识符。 3:然后在具有相同标识符的第二个 viewController 中对您想要的操作执行 segue。

如果您有 NavigationController,请尝试:(Objective-C)

FirstVC* firstVC = self.navigationController.viewControllers[self.navigationController.viewControllers.count
- 2]

导航堆栈中一系列 viewController 中的最后一个

如果您在没有 NavigationController 的情况下打开第二个 viewController,您可以获得第一个 viewController 的实例,例如:

FirstVC* firstVC = self.presentingViewController

请注意,呈现 VC 的实例将在转换完成后在此 属性 中可用,例如 viewDidAppear,例如