-
单例传值 反向传值2查看全部
-
单例传值 单例类.h查看全部
-
NSUserDefaults 传值方法是系统帮我们封装好的。也是将数据写入到文件中,不需要自己去创建文件。默认在沙盒路径中存储我们的数据
查看全部 -
NSUserDefaults传值:
每一个工程在创建之后都有一个默认的沙盒路径。
通过一个页面将数据通过NSUserDefaults的方法写入到沙盒文件中,另一个文件通过沙盒文件读取数据
和单例传值比较接近,比较像,只不过单例是在内存中传值
查看全部 -
单例传值:得有个单例对象。所以就要创建一个单例类。单例对象的创建其实就是保证对象在程序运行过程中只有一个。就是说 每次通过类方法调用单例对象的时候都是同一个对象就可以了。
都是同一个对象:那么就必须通过静态变量的方式来进行创建。静态变量一旦被赋值之后,下次再读取的是上一次的值
首先需要有一个类方法。
实现类方法来创建单例对象。
查看全部 -
页面传值:
1:属性传值:主要运用于正向传值。不可以进行反向传值。也不能进行跨页面的传值。
2:单例传值:可以实现正向、反向、跨页面传值。数据是写入内存中,然后再从内存中读取数据
不好的点:必须要创建一个单例对象才可以 。创建单例对象需要创建单例类
3:NSUserDefaults传值:与单例传值相像。它是将数据写入沙盒文件中,再从沙盒文件中读取数据
4:代理传值:最经典最常用的传值方式。主要用于反向传值,而且是一对一的,必须要两个页面之间建立代理关系。
5:block传值:代理传值能做的,block传值都能做。也是一对一,页面也要建立关系之后才能传值
6:通知传值:可以进行跨页面之间的传值。多对多的传值方式。发送方发送一个值,任何一个接收方都可以接收。所以接收方接收的通知,可以来自任何发送方
查看全部 -
几种常见的页面传值方式:
属性传值:主要用于正向传值,比较简单,过于单一,不能进行反向传值,也不能进行跨页面的传值
单例传值:比较强大,可以实现跨页面,正向反向都可,但是要自己创建一个单例类,将数据写至内存
NSUserDefaults传值:与单例传值较像,但是是将数据写至沙盒文件中,再进行读取数据
代理传值:主要用于反向传值,而且必须为一对一关系传值
block传值:可以做代理传值能做的事,且代码较为简介,但是也是一对一的关系传值
通知传值:可多对多,可跨页面传值,接收方接受的通知可来自于任何一个发送方
查看全部 -
通知传值111
查看全部 -
block传值
查看全部 -
代理页面传值
查看全部 -
NSUserDefaults传值
查看全部 -
通知传值
我们需要一个发送方和一个接收方
接收方先去监听,模拟从页面2 通过通知的方式传值到页面1,页面1自然就是接收方,那么接收方首先是需要来监听的,我们先看一下,我们需要监听来等待这个消息,所以我们先在页面1 来监听通知,在哪个位置好呢,跳转至页面2之前我们先来做一个监听,还没有到页面2 呢我先来监听页面2 的消息,你什么时候发 ,我这边自然就可以收到了,所以呢,在跳转至页面2之前 添加监听。那么这个监听呢,我们注意一下是通过通知中心的方式也就是说给通知中心就是我们的广播站来添加一个观察者也就是监听者,那我们的通知中心是怎么创建的。
[NSNotificationCenter defaultCenter]addObserver:<#(nonnull id)#> selector:<#(nonnull SEL)#> name:<#(nullable NSNotificationName)#> object:<#(nullable id)#>
这就是我们的通知中心 给他添加一个监听者addObserver就是我们的self我们的接收方,selector是我们接收到通知之后的一个处理
notHandle:带一个参数,参数就是我们的通知。name是什么呢 name就是通知的名字,你要监听哪一个通知,所以呢notify就是通知的名字,
object这个参数填nil就行了,也就是你监听来自哪里的通知,填nil的话表示广播群发的,任何一个发送方只要发送了一个叫notify的通知,我们都可以收到。所以呢我们就添加好了这个观察者了,然后呢我们来实现
notHandle的方法
就是我们收到通知之后的一个处理,那么他需要一个参数就是我们的通知
回到页面2去发通知,在点击回到页面1的时候进行传值,发送通知要通过广播站来发送就是我们的通知中心
查看全部 -
协议和block页面传值应用于两个有直接跳转关系的页面之间的传值
通知传值相对来说更灵活 特别是在实现跨页面之间跳转的时候
和我们生活里的通知是一样的,需要有一个发送方和一个接受方,例如广播站,广播员就是我们的发送方他是广播数据的,而接收方就是我们的收音机,是用来接收数据的,发送方和接收方之间如果要进行通讯的话,那么需要一个中间介质,就是我们的通知中心,也就是我们生活里面的广播站,如果没有广播站的话 ,广播员和收音机之间是无法进行通讯的,所以代码里面的通知中心就模拟了广播站的概念,发送方是发送数据 ,接收方是接收数据的,但是在代码里面,我们需要注意的是我们要先在接收方定义一个观察者来等待通知中心发出的消息,那么当他等待之后,发送方将通知发送出去,先发送到通知中心,然后通知中心拿到数据再回调给我们的接收方。这就是通知传值的一个过程。
为什么要先观察后发送呢,其实很简单 ,生活中也是一样
如果广播员先去广播通知,你的收音机还没有打开,当你的收音机打开之后再去监听的话可能已经广播完了,你没有听到,所以如果你想收到广播的通知,那么你必须首先打开收音机监听这段通知,当通知来的时候就可以收到这份通知并且做后续的处理工作,那我们代码也是一样处理的,我们接收方要先观察等待通知中心的消息,然后通知我们的发送方发送了通知,我们的通知中心自然就把消息转播到接收方了。所以这就是通知传值的一个过程
查看全部 -
block传值主要应用于反向页面传值,我们需要在第二个页面定义一个block用来传值
定义一个属性 为了防止block的循环引用,block一搬都定义为copy属性
@property (copy) void (^block) (NSString*);也传递一个字符串
返回值类型 block的名字 block的参数 ^block的标志
看到小箭头一定是个block
//定义一个block进行反向传值
一个block定义好了,block写法相对来说麻烦了一些,但是非常好用,建议大家经常去使用block,用多了自然就写熟了
页面2 跳转回页面1 的时候进行传值
直接调用self.block()传值就可以了 他的传值方式 也和C语言一样,可以理解为block就是一个C语言函数,小括号就是C语言里的小括号,小括号里面传递的就是我们的实参
//block传值--反向传值
self.block(self.textField.text);
回到页面1 如何来接收这个block呢,block不像协议 实现协议方法就可以了,block需要实现的话 它是一个对象的属性,我们要向实现block就是实现这个对象的属性,所以我们在创建页面2 的时候,我们就要实现这个block.
一面传值 一面接收值
查看全部 -
block传值
苹果最推荐也是目前最为流行的一种传值方式,它和代理传值做着一样的工作,代理传值能做的工作block都能做,他比代理传值写法更简单更容易理解一些,这是近两年苹果主推的一种传值的方式。
页面1跳转到页面2 页面2回调block进行传值
页面1只需要实现block接收数据就可以了
简单在不需要设置代理也不需要定义一个协议
查看全部
举报