当segue关闭时执行操作

时间:2018-01-02 12:07:07

标签: ios swift uitableview segue

我有一个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)关闭,用户返回到第一个ViewController。如何在用户关闭segue时调用第一个ViewController中的方法而不使用viewWillAppear?

2 个答案:

答案 0 :(得分:1)

Hello @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
        }


之后你必须选择你的第二个ViewController

1:右键单击Controller并在退出时拖动,然后会出现以下方法 2:选择它并为其分配标识符。 3:然后在第二个具有相同标识符的viewController中对该操作执行segue。

enter image description here

答案 1 :(得分:0)

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

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

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

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

FirstVC* firstVC = self.presentingViewController

请注意,转换完成后,此属性中的演示VC实例将在viewDidAppear中完成,例如