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)
}
(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
}
swift3.0三种反向传值相关推荐
- Aurora 8B/10B、PCIe 2.0、SRIO 2.0三种协议比较
在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...
- 函数传参string_C/C++的三种函数传值方式及其区别
C/C++函数传参方式我想很多朋友应该都知道,但是不同传参方式的背后他们的区别是什么我想很多人并不那么清楚.本文就给大家揭露一下各传参方式的区别. 传参方式有这三种:值传递.引用传递.指针传递 大家可 ...
- asp.net ajax怎样传值,JQuery在asp.net中三种ajax传值
1)通过webservice,注意去掉注释[System.Web.Script.Services.ScriptService]这行前的注释 2)通过aspx.cs文件中的静态方法 3)通过aspx文件 ...
- Struts 往jsp页面传值的三种方式 以及获取Jsp页面值得一种方式
//传值的的第一种方式直接在action中getset方法完成值的传递 第一种方法值是放在值栈valuestack中其余两种是放在actioncontext中 this.setName(&quo ...
- 基于Virtex-6 FPGA的三种串行通信协议测试及对比
在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...
- maven web项目导入sts_Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式
我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 43W+,如下图: 2017 年由于种种原因,就没有 ...
- ubuntu安装mysql没反应_Ubuntu安装mysql三种安装方式
三种安装方式: 1. 从网上安装 sudo apt-get install mysql-server.装完已经自动配置好环境变量,可以直接使用mysql的命令. 注:建议将/etc/apt/sourc ...
- C语言中三个数比较大小详解——三种方法
C语言中三个数比较大小详解--三种方法 方法一:if-else法 方法二:函数法 方法三:三目运算符法 C语言中比较三个数的大小有很多方法,以下是我总结的三种方法: 首先我定义 int a = 1 ...
- C++编程练习 计算一元二次方程组解判断是否测试过三种情况
原题来自菜鸟教程 C++ 实例 - 求一元二次方程的根 实现方法相当简单 就是最基础的C语言程序 以下是菜鸟教程给的答案-- #include <iostream> #include &l ...
最新文章
- indexedDB数据库的使用
- Java依赖注入 - DI设计模式示例教程
- 抽象类和普通类主要有三点比较大的区别,super
- 牛客寒假算法集训 1
- 初学windows程序设计
- Django 文件下载
- egret牧场小游戏遇到的坑
- qq空间登录(采用cookie纪录+广度搜索BFS)
- 读书印记 - 《刘强东自述:我的经营模式》
- 工业大数据收集及预测建模方法(南京大学-宋哲博士分享)- 个人总结
- 钉钉打卡作弊软件非法获利近 500 万元,CEO 被判刑 5 年 6 个月
- untiy 请求安卓权限
- 微信公众号支付的回调地址 不起作用的问题
- 2019年宁波顶岗实习
- 【年度总结系列 2019】2019 时不我与
- 容器类:QVector、QList、QSet、QMap使用
- ViewBinding和DataBinding的理解和区别
- SQL创建用户、创建表
- 百度李彦宏致股东:选择技术战略,就必须抵御短期机会诱惑 | CEO说
- 致数统院副院长的一封信(含:泛函分析初步知识,对数学和教育的思考)
热门文章
- libev源码解析——定时器原理
- Jenkins简介及在Windows上的简单使用示例
- CUDA Samples: image normalize(mean/standard deviation)
- 基于chyh1990/caffe-compact在windows vs2013上编译caffe步骤
- Windows7下OpenGL简单使用举例
- 【Qt】在ubuntu14.04上安装Qt5.12(失败)
- php日志接入rsyslog,rsyslog和在PHP上的应用
- java g1 gc ref proc_java – 针对sparc T4 8核的正确G1 GC调优
- ajax跨界表单,ajax使用jsonp解决跨域问题
- html手机不能自动播放音乐,解决移动端浏览器 HTML 音频不能自动播放的三种方法...