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

#本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含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)
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值