传值有四种方法 :

1. 属性传值
2. 单例传值
3. 代理传值
4. block传值
 
 
一.属性传值   (前-->后)
1. 后面的界面定义一个属性  存放前一个界面传过来的值
   注意:属性定义成字符串还是别的类型 取决于你的需求 
 
2. 后面的界面创建完毕后,为属性赋值(记录需要传递的值)
 
3. 在需要使用值的地方  使用属性记录的值
 
4. 通过 定义属性 达到传值目的的方法 称为属性传值
属性传值一般用于 从前一个界面向后一个界面传值
 
二.单例传值  (万能的传值方式  可以跨多个页面之间进行传值)
 
1.首先定义一个单例  在这个单例中只有一个实例  但是可以有多个属性
 
2. 
 static Single *single=nil;
+(Single *)shareSingle
{
@synchronized(self){
if (single==nil) {
single=[[Single alloc] init];
} return single;
}

  

3.把要传的值赋值给单例中d的属性

 
注:单例  通常提供一个类方法 获取这个唯一的实例
//但绘制类型  就是这个类的类型 命名以default shared  current standard等开头
单例一个类只有一个实例  单例的对象通常不释放  直到程序退出
 
 
三.代理传值    (后>前)
 
1.   后一个界面定义一个协议 并且定义一个属性叫delegate
 
2.  在前一个界面进入后一个界面的瞬间(创建完后一个界面之后,让前一个界面作为后一个界面的delegate)
 
3.  前一个界面实现代理方法
 
4.  后一个界面在合适的机会 让代理 执行代理方法(传的值以参数的形式含在代理方法里)
 
 
四.block传值   (后->前)
 
1.后一个界面声明block属性
 
@property (nonatomic,copy)void (^chuanzhi)(NSString *_str);

  

 
2.在.m中的传值方法里检查block是不是存在
 
if (_chuanzhi) {
_chuanzhi(_textField.text);
_chuanzhi=nil;
}

  

 
3.前一个界面进入后一个界面的方法里实现这个block
 
 [(dVC)后一个界面控制器 setChuanzhi:^(NSString *_str){
dispatch_async(dispatch_get_main_queue(), ^{ _label.text=_str;
}); }];

  

iOS的四种传值方式的更多相关文章

  1. mvc.net 的四种传值方式

    Control: view:

  2. iOS 页面间几种传值方式(属性,代理,block,单例,通知)

    第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视 ...

  3. IOS的四种数据存储方式及优劣

    IOS有四种经常使用数据存储方式: 第一种方法:用NSUserDefaults存储配置信息 NSUserDefaults被设计用来存储设备和应用的配置信息.它通过一个工厂方法返回默认的.也是最经常使用 ...

  4. Android开发之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  5. iOS学习之六种传值方式

    iOS页面传值方式 应用于: 两个互动的界面:1)页面一跳转到页面二,页面一的textField的值传给页面二的label.2)A页面跳转到B页面,B页面再跳转回A页面(注册页面跟登录页面) 两个不互 ...

  6. js的数据类型、函数、流程控制及变量的四种声明方式

    运算符 基本运算符 加 + 减 - 乘 * 除 / 取余 % 自增 ++ eg: 1++ 或 ++1 自减 -- eg: 1-- 或 --1 注:++或--写在前面表示优先级最高,先进行自增或者自减 ...

  7. lua中for循环的四种遍历方式

    lua中for的四种遍历方式区别 table.maxn 取最大的整数key #table 从1开始的顺序整数最大值,如1,2,3,6 #table == 3   key,value pairs 取每一 ...

  8. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

    Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览   作为一个完成的应用程序,数据存储操作是必不可少的. ...

  9. HttpwebClient的四种请求方式

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.      本文旨在发布代码,供自己参考,也供大家参考,谢谢. 正题: Ht ...

随机推荐

  1. J20170618-hm

    番兵(ばんぺい) 哨兵 後始末 善后  

  2. P3299 [SDOI2013]保护出题人

    传送门 全世界都会二分可海星-- 首先记\(sum[i]\)为\(a[i]\)的前缀和,那么第\(i\)个的答案就是\(max\{\frac{sum[i]-sum[j-1]}{x+(i-j)d}\}\ ...

  3. JS属性defer

      其实就是简单的利用defer属性,让浏览器读JS脚本的时候完全不等脚本开始读就开始读下面的图片啊,html代码了.然后让js脚本自己在那里慢慢读取完以后再执行. 给外链的js脚本添加defer=& ...

  4. Python基础数据类型(三)list 列表

    3.4列表list [] 列表的格式 lst_l = [1,'123',[1,'www',2],'包青天'] 列表也有索引 print(lst_l[0]) print([-1][0:2]) #包青 切 ...

  5. Vue组件库elementUI 在el-row 或 el-col 上使用@click无效失效,

    问题: elementUI 在el-row 或者 el-col 上使用@click失效, 解决: 在click后面加上 .native .要使用@click.native=”handler()”才行, ...

  6. 关于C++ const 变量

    const 的全局变量是储存在一个只读数据段中,虽然你可以定义一个指向它的指针,却会在运行时,在对该地址赋值的时候发生运行错误,而局部的const变量是储存在栈中的,离开作用域后同样会被释放,并且可以 ...

  7. 355 Design Twitter 设计推特

    设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文.你的设计需要支持以下的几个功能:    postTweet(userI ...

  8. 【转】Linux字符转换命令col

    转自:http://www.cnblogs.com/ningvsban/p/3725464.html [root@www ~]# col [-xb]选项与参数:-x :将 tab 键转换成对等的空格键 ...

  9. debounce还是throttle(去抖和节流)

    debounce 去抖 我的理解很简单,比方说window.onscroll会疯狂触发handler,此时给它一个debounce(handler, delayTime). 就是不管你延时时间内触发了 ...

  10. no斜体 背景图片坐标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...