1、 通知传值-一般常用于返回界面的时候,把返回前界面的值传到返回后界面。

//前一个界面
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notification:) name:@"notification" object:nil];
// Do any additional setup after loading the view.
} //执行通知方法
- (void) notification:(NSNotification *)notifi{
NSLog(@"++++++");
NSLog(@"%@",notifi.userInfo);
}
//移除通知
-(void) dealloc{
//第一种 移除该控制器所有的通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
//第二种 移除该控制器下名为"notification"的通知
// [[NSNotificationCenter defaultCenter] removeObserver:self name:@"notification" object:nil];
}
//后一个界面
//创建传值信息
NSDictionary *dict=[[NSDictionary alloc]initWithObjectsAndKeys:@"val1",@"key1",@"val2",@"key2", nil];
//创建通知
NSNotification *notification=[NSNotification notificationWithName:@"notification" object:nil userInfo:dict];
//通过通知中心发送通知
[[NSNotificationCenter defaultCenter] postNotification:notification];

2、block 反向传值

前一个界面获取后一个界面传过来的值

//后一个界面
.h文件
@interface jViewController : UIViewController
//定义block
@property (nonatomic,copy) void (^NextViewControllerBlock)(NSString *tfText);
@end
.m文件
-(void) btnClick:(UIButton *)btn{ //判断block是否为空
if (self.NextViewControllerBlock) {
self.NextViewControllerBlock(@"我是后一个界面传的值");
}
[self.navigationController popViewControllerAnimated:YES];
}
//前一个界面
//.m文件
-(void) btnClick:(UIButton *)btn{
jViewController *nextVC = [[jViewController alloc]init];
nextVC.NextViewControllerBlock = ^(NSString *tfText){
NSLog(@"++++%@",tfText);
};
[self.navigationController pushViewController:nextVC animated:YES]; }

3、属性传值(一般适用于前一个界面传值给后一个界面)

//后一个界面
//首先在.h定义获值属性(就是要有接收传值过来的属性)
@interface jViewController : UIViewController
@property( copy,nonatomic)NSString *str;
@end //.m
-(void) btnClick:(UIButton *)btn{
NSLog(@"++++%@",_str);
}
//前一个界面
-(void) btnClick:(UIButton *)btn{
//跳转到后一个界面,也把值传过去
jViewController *nextVC = [[jViewController alloc]init];
nextVC.str=@"我是第一个界面传给第二个界面的值";
[self.navigationController pushViewController:nextVC animated:YES]; }

4、数据持久化传值

NSUserDefaults是数据持久化的一种主要做存储使用。

 NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
//存储数据
[userDefaults setObject:<#(nullable id)#> forKey:<#(nonnull NSString *)#>];
[userDefaults setInteger:<#(NSInteger)#> forKey:<#(nonnull NSString *)#>];
[userDefaults setBool:<#(BOOL)#> forKey:<#(nonnull NSString *)#>];
[userDefaults setURL:<#(nullable NSURL *)#> forKey:<#(nonnull NSString *)#>];
[userDefaults setFloat:<#(float)#> forKey:<#(nonnull NSString *)#>];
[userDefaults setDouble:<#(double)#> forKey:<#(nonnull NSString *)#>];
[userDefaults setValue:<#(nullable id)#> forKey:<#(nonnull NSString *)#>];
//读取数据
[userDefaults objectForKey:<#(nonnull NSString *)#>];
[userDefaults integerForKey:<#(nonnull NSString *)#>];
[userDefaults boolForKey:<#(nonnull NSString *)#>];
[userDefaults URLForKey:<#(nonnull NSString *)#>];
[userDefaults floatForKey:<#(nonnull NSString *)#>];
[userDefaults doubleForKey:<#(nonnull NSString *)#>];
[userDefaults valueForKey:<#(nonnull NSString *)#>];

四种传值方法(通知、block、属性、NSUserDefaults)的更多相关文章

  1. ASP.NET MVC 四种传值方法

    1.后台传值: public class DataController : Controller { // GET: Data public ActionResult Index() { //1 Vi ...

  2. CSS当中color的四种表示方法

    这是我的第一篇博客,所以写的东西会比较简单. css当中,好多地方都会用到color属性,用来使html内容丰富多彩,例如:background-color:border-color: 第一种表示法使 ...

  3. 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core

    百度地图和高德地图坐标系的互相转换   GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记 ...

  4. javascript DOM和DOM操作的四种基本方法

    在了解了javascript的语言特性后,javascript真正大放光彩的地方来了——这就是javascript DOM Javascript DOM DOM(Document Object Mod ...

  5. C#四种深拷贝方法

    //四种深拷贝方法 public static T DeepCopyByReflect<T>(T obj) { //如果是字符串或值类型则直接返回 if (obj is string || ...

  6. C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏

    C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...

  7. C语言中返回字符串函数的四种实现方法

    转自C语言中返回字符串函数的四种实现方法 其实就是要返回一个有效的指针,尾部变量退出后就无效了. 有四种方式: 1.使用堆空间,返回申请的堆地址,注意释放 2.函数参数传递指针,返回该指针 3.返回函 ...

  8. sass学习笔记 -- sass的四种编译方法

    sass的四种编译方法:(.scss) (一)ruby下的命令行编译 首先需要安装ruby,注意需勾选Add Ruby executables to your PATH选项,以添加环境变量. ruby ...

  9. Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法

    Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误 解决方法1: 注释掉此段代码,即可. 缺点:导致Django项目完全无法防 ...

随机推荐

  1. 怎么打印 sql 语句

    1.添加jar包 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api< ...

  2. shiro web 集成

    集成方法 shiro与web集成,主要是通过配置一个ShiroFilter拦截所有URL,其中ShiroFilter类似于SpringMVC的前端控制器,是所有请求入口点,负责根据配置(如ini配置文 ...

  3. redis介绍(6)集群(ruby)

    redis集群: redis集群是高可用的一种体现,让整个redis圈更加稳定,不易出现宕机的情况, redis原理: redis3.0之前是不支持集群的,实现集群要自己去配置实现,很麻烦,在3.0之 ...

  4. redis mysql验证 redis_mysql_check.py

    # coding:utf-8 import pymysql import redis import sys def con_mysql(sql): db = pymysql.connect(host= ...

  5. Java 8方法引用使用指南

    [编者按]本文作者为拥有15年 Java 开发经验的资深程序员 Per-Åke Minborg,主要介绍如何灵活地解析 Java 中的方法引用.文章系国内 ITOM 管理平台 OneAPM 编译呈现. ...

  6. SQL Server 索引知识-应用,维护

    创建聚集索引 a索引键最好唯一(如果不唯一会隐形建立uniquier列(4字节)确保唯一,也就是这列都会复制到所有非聚集索引中) b聚集索引列所占空间应尽量小(否则也会使非聚集索引的空间变大) c聚集 ...

  7. 设计多选按钮ListChooseView

    设计多选按钮ListChooseView 答应某位女屌丝而写的控件,效果还不错,开源给大家^_^! 效果图: 源码: // // ListChooseView.h // ScrollChooseBut ...

  8. 铁乐学python26_hashlib+configparser+logging模块

    大部份内容摘自博客http://www.cnblogs.com/Eva-J/ hashlib模块算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? ...

  9. python---九九乘法表代码

    #_*_ coding:utf-8 _*_# author choco ''' #while循环num1=0while num1<9: num1+=1 num2=1 while num2< ...

  10. JavaScript动画

    早期的JS动画 早期的JS循环动画主要是通过setInterval/setTimeout实现的 function jump() { console.log("我跳了一下"); } ...