文档章节

iOS NSNotificationCenter(广播)的介绍及使用

JoshSone
 JoshSone
发布于 2016/11/12 07:38
字数 624
阅读 22
收藏 0

1.什么时候广播?

NSNotificationCenter,可以形象的理解成广播,广播是一种通知模式,特点是一对多,我们通过类似建立广播的模式来告诉对象,统一来执行某项任务,这里举一个更为具体的例子,例如我们在使用聊天软件时,有一个设置使用模式的功能,当我们选择好喜欢的模板后发现,不单是选择模板页变换了格式,而是所有的软件界面都改变成了对应的格式。

2.广播的使用步骤:(分三部走)

①建立广播:设置自己的频率(name)

②用户通过调整收音机频率(name)接听广播

③关闭广播

在这里我们来实现一个改变颜色的功能

 

准备工作:

①首先在SB中生成一个Tab Bar Controller

②生成三个UIViewController的子类,为了方便起见,我直接设置为VC1,VC2, VC3

③将SB中UIViewController的class分别设置为VC1,VC2, VC3

④在VC1中 添加一个Button 并在VC1的代码中添加它的点击方法。

3.代码实现

①初始化NSNotificationCenter

-(IBAction)ClickChangeColor:(id)sender{   
//postNotificationName 广播的调频赫兹
//object               要传播的内容
    [[NSNotificationCenter defaultCenter]postNotificationName:@"changename" object:[UIColor blueColor]];
}

②注册广播(分别在V1,V2,V3.m中实现代码)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
   //name 一定要与上面的name 一致(可以理解为同一赫兹才能接听广播)
     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(ChangeColor:) name:@"changecolor" object:nil];
}
//这里传的参数一定要是NSNotification类型
-(void)ChangeColor:(NSNotification*)notification{
    self.view.backgroundColor=notification.object;
}

③关闭广播(分别在V1,V2,V3.m中实现代码)

-(void)dealloc{
//移除广播
    [[NSNotificationCenter defaultCenter]removeObserver:self];
}

注意:在这里我是用Tab Bar Controller来实现广播,但是如果按照我的方法来做,最终效果很有可能只有VC1一页完成了变色,这是因为模拟器运行时最初只生成了显示在屏幕上的第一页VC,另两页VC中的内容必须在进入了其中之后才会加载,所以如果我们没有加载另两页VC之前点击换色的按钮只有第一页变色

解决方案:模拟器运行后依次点击下面的Tab Bar Item

这样三页的VC就全部加载成功了,然后再点击换色按钮,就可以成功的完成变色功能了

© 著作权归作者所有

共有 人打赏支持
JoshSone
粉丝 7
博文 76
码字总数 32794
作品 0
长春
iOS工程师
IOS NSNotification 通知

一. 先看下官方对NSNotification通知的解释 1. NSNotification 通知  @interface NSNotification : NSObject   接口通知,继承NSObject,实现NSCopying,NSCoding协议  A container for...

冬季的暖风
08/02
0
0
iOS精美过度动画、视频会议、朋友圈、联系人检索、自定义聊天界面等源码

iOS精选源码 iOS 精美过度动画源码(http://www.code4app.com/thread-14827-1-1.html) iOS简易聊天页面以及容联云IM自定义聊天页面的实现思路(http://www.code4app.com/thread-30348-1-1.htm...

sunnyaigd
07/11
0
0
(转)直接拿来用!最火的iOS开源项目(二)

“每一次的改变总意味着新的开始。”这句话用在iOS上可谓是再合适不过的了。GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目...

孙启超
2013/06/21
0
1
Cocos-BCX 技术周报第十一期

Cocos-BCX 技术周报第十一期 2018-09-05 17:25编辑: suiling分类:区块链来源:CocosBCX 区块链周报CocosBCX 招聘信息: iOS开发 iOS开发 iOS开发 app开发上架H5技术 app开发技术 图像处理及...

suiling
09/05
0
0
iOS开发系列--通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情。iOS中通知机制又叫消息机制,其包...

TomatosX
2015/03/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20181018 上课截图

![](https://oscimg.oschina.net/oscnet/49f66c08ab8c59a21a3b98889d961672f30.jpg) ![](https://oscimg.oschina.net/oscnet/a61bc2d618b403650dbd4bf68a671fabecb.jpg)......

小丑鱼00
46分钟前
1
0
WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部