使用unwind segue控制器间逆向传值

本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan.

项目中经常碰到这种场景, 那就是A控制器跳转到B控制器, 然后B控制器返回到A控制器的时候, 要带B控制器的信息回来刷新A控制器. 看似很简单的一个需求, 我们需要用到代理, 或者通知来做, 实际上, 我们还可以用unwind segue来完成这个需求.

使用unwind segue控制器间逆向传值_第1张图片
image.png
class AViewController: UIViewController {
    @IBAction func handleUnwindSegue(unwindSegue: UIStoryboardSegue) {
        let svc = unwindSegue.source as! BViewController
        view.backgroundColor = svc.view.backgroundColor
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        segue.destination.modalPresentationStyle = .fullScreen
    }
}

在即将返回的控制器, 即A控制器中写需要处理业务逻辑的代码的方法:
@IBAction func handleUnwindSegue(unwindSegue: UIStoryboardSegue)

使用unwind segue控制器间逆向传值_第2张图片
image.png

将back按钮拖线到B控制器的Exit, 那么点击back按钮, 就会返回A控制器, 并调用上述的方法:
@IBAction func handleUnwindSegue(unwindSegue: UIStoryboardSegue),通过seguesource属性, 可以拿到B控制器, 然后将B控制器的数据拿出来赋值给A控制器了, 这样就完成了控制器的逆向传值

这样直接将按钮B拖线到Exit的, 是会直接触发的, 如果我们要条件性触发的话怎么做呢?

使用unwind segue控制器间逆向传值_第3张图片
image.png

如上图所示, 选中vc, 按住control键, 拖到Exit, 然后选中Manual Segue下面的方法.

使用unwind segue控制器间逆向传值_第4张图片
image.png

然后选中这个unwind segue.

使用unwind segue控制器间逆向传值_第5张图片
image.png

标明unwind segueidentifier

然后, 要使用这个segue的时候, 直接调用
performSegue(withIdentifier:sender:)就可以了, 这就是条件性调用了.

比如上述这个例子里, back按钮直接拖线到控制器, 而不是Exit. 然后在拖线的方法里调用performSegue(withIdentifier:sender:)

如下:

    @IBAction func back(_ sender: UIButton) {
        performSegue(withIdentifier: "segueID", sender: sender)
    }

你可能感兴趣的:(使用unwind segue控制器间逆向传值)