通知传值111
通知传值
我们需要一个发送方和一个接收方
接收方先去监听,模拟从页面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页面传值应用于两个有直接跳转关系的页面之间的传值
通知传值相对来说更灵活 特别是在实现跨页面之间跳转的时候
和我们生活里的通知是一样的,需要有一个发送方和一个接受方,例如广播站,广播员就是我们的发送方他是广播数据的,而接收方就是我们的收音机,是用来接收数据的,发送方和接收方之间如果要进行通讯的话,那么需要一个中间介质,就是我们的通知中心,也就是我们生活里面的广播站,如果没有广播站的话 ,广播员和收音机之间是无法进行通讯的,所以代码里面的通知中心就模拟了广播站的概念,发送方是发送数据 ,接收方是接收数据的,但是在代码里面,我们需要注意的是我们要先在接收方定义一个观察者来等待通知中心发出的消息,那么当他等待之后,发送方将通知发送出去,先发送到通知中心,然后通知中心拿到数据再回调给我们的接收方。这就是通知传值的一个过程。
为什么要先观察后发送呢,其实很简单 ,生活中也是一样
如果广播员先去广播通知,你的收音机还没有打开,当你的收音机打开之后再去监听的话可能已经广播完了,你没有听到,所以如果你想收到广播的通知,那么你必须首先打开收音机监听这段通知,当通知来的时候就可以收到这份通知并且做后续的处理工作,那我们代码也是一样处理的,我们接收方要先观察等待通知中心的消息,然后通知我们的发送方发送了通知,我们的通知中心自然就把消息转播到接收方了。所以这就是通知传值的一个过程
通知传值相关过程:接收方先定义一个观察者等待通知中心发送消息;
发送方通知发送给出去到通知中心,并将数据传递出去给通知中心;通知中心回调数据给接收方
操作:给通知中心添加一个监听者;接收到通知之后的处理,去除通知的数据;发送通知;读取通知内容