swift3.0三种反向传值

news/2024/7/2 23:04:48

一 :通知

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

            }



http://lihuaxi.xjx100.cn/news/235257.html

相关文章

极光推送集成步骤详解

关于极光推送,本人也算做过几次,下面就给大家简单总结下我做时所遇到的问题。下面这个文件,需要你先导入极光SDK后才能调试,需要注意的是,极光推送不支持模拟器,所以需要真机调试,因此首先要做的…

【Python3爬虫】常见反爬虫措施及解决办法(二) ...

【Python3爬虫】常见反爬虫措施及解决办法(二) 这一篇博客,还是接着说那些常见的反爬虫措施以及我们的解决办法。同样的,如果对你有帮助的话,麻烦点一下推荐啦。 一、防盗链 这次我遇到的防盗链,除了前面说…

Swift3.0和OC桥接方法

1.直接在工程中commandn,出现如图,点击Header File创建桥接文件Bridging-Header.h,如图: 2.点击next,出现如图画面,一定要记得勾选第一项,再点击create创建完成。 3.配置桥接文件,点击target - …

2019年3月

分包加载 使用公众号登录微信提示  "公众号暂不支持此种登录方式" 使用已经注册过的手机号注册新的微信账号提示  "你申请注册的手机号已被其他微信号绑定,暂时不能使用该手机号注册" https://github.com/witcat/LayaWxCacheFromZip /******/ (functio…

JSPatch – 动态更新iOS APP

JSPatch是最近业余做的项目,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的原生接口,获得脚本语言的能力:动态更新APP,替换项目原生代码修复bug。 用途 是否有过这样的经历:新版本…

swift3.0最新拨打电话方法

let alertVC : UIAlertController UIAlertController.init(title: "是否拨打报警电话:10086", message: "", preferredStyle: .alert) let falseAA : UIAlertAction UIAlertAction.init(title: "取消", style: .cancel, handler: nil) let tr…

swiftswift3.0自己封装的快速构建页面的方法

//#param mark 控件 func creatLabel(frame:CGRect,text:String,textColor:UIColor,textFont:CGFloat,textAlignment:NSTextAlignment) -> UILabel { let label UILabel.init(frame: frame) label.text text label.textColor textColor label.font UIFont.systemFont(of…

python 之 pip、pypdf2 安装与卸载

pip是个啥? pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。 第一步:pip 下载:https://pypi.org/project/pip/#files 第二步:解压,进入目录python pip\pi…