美文网首页
使用unwind segue控制器间逆向传值

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

作者: 小冰山口 | 来源:发表于2019-11-11 12:12 被阅读0次

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

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

    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)

    image.png

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

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

    image.png

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

    image.png

    然后选中这个unwind segue.

    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控制器间逆向传值

          本文链接:https://www.haomeiwen.com/subject/vsunbctx.html