swift3.0三种反向传值

一 :通知

1.通知传值所用方法

// MARK: - private methods(内部接口)

    let NotifMycation = NSNotification.Name(rawValue:"MyNSNotification")

    func tempbuttonAction() {

        //这个方法可以传一个值

        NotificationCenter.default.post(name: NotifMycation, object: "填写所要传的值")

        //这个方法可传一个字典

//        NotificationCenter.default.post(name: NotifMycation, object: nil, userInfo: ["" : ""])

       self.dismiss(animated: true, completion: nil)

    }

2.通知传值接收方法
(1)接收通知

 //接受通知

        let NotifMycation = NSNotification.Name(rawValue:"MyNSNotification")

        NotificationCenter.default.addObserver(self, selector: #selector(upDataChange(notif:)), name: NotifMycation, object: nil)

//(2)移除通知的方法

deinit {

        //移除通知

        NotificationCenter.default.removeObserver(self)

    }

//(3)接收传过来的值

 func upDataChange(notif: NSNotification) {

        guard let text: String = notif.object as! String? else { return }

        self.text.text = text

    }


二:代理

1.设置代理

//(1)定义代理方法

protocol MyDelegate {

    func didDelegateText(text: String)

}

//(2)声明代理

    var delegate: MyDelegate?


//(3)向前传值button的响应方法---代理传值的方法就写在buton的点击事件中

 func tempbuttonAction() { //此处为button的点击事件

        delegate?.didDelegateText(text: self.textField.text!) //此处为代理传值的方法

        self.dismiss(animated: true, completion: nil)

    }

2.前一个界面接受代理

//(1)首先遵循代理   --->MyDelegate

//(2)

let vc = DelegateViewController()

            vc.delegate = self

//接收代理传过来的值

//代理接受传过来的值

    func didDelegateText(text: String) {

        self.text.text = text

    }


三: 闭包传值

//(1)设置闭包

typealias textBlock = (String) -> ()

    var block: textBlock?

    func getBlock(block: textBlock?) {

        self.block = block

    }

//(2)传值所用方法书写 ----即点击事件向前返回时的点击方法中

 func tempbuttonAction() {

        if let block = self.block {

            block(self.textField.text!)   //此处填写所要传的值

        }

        self.dismiss(animated: true, completion: nil)


    }

//(3)前一个界面接收闭包所传过来的值

let vc = BlockViewController()

            vc.getBlock{ (value) in

                self.text.text = value

            }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值