文档章节

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

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

精选30+云产品,助力企业轻松上云!>>>

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...

冬季的暖风
2018/08/02
0
0
IOS NSNotification 通知

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

osc_0i27cy0p
2018/08/02
1
0
iOS和Android对比

Controller和Activity Controller:Controller本职工作是控制UI和处理逻辑,其中UI Controller作为对View的Controll是很关键的,另外数据传递和IPC也算逻辑的一部分,所以放到这一节。UIVie...

魔弧
2018/12/18
128
0
类似于kvo通知机制的NSNotificationCenter

IOS软件开始的时候总是会存在这种情况的,就是需要有些应用程序需要开后台任务,而且后台任务的处理需要一定的实际,例如是:文件的下载和上传,这是最费时,而且为了做到更好的用户体验,一...

起始页
2013/06/12
0
0
iOS精美过度动画、视频会议、朋友圈、联系人检索、自定义聊天界面等源码

iOS精选源码 iOS 精美过度动画源码 iOS简易聊天页面以及容联云IM自定义聊天页面的实现思路 自定义cell的列表视图实现:置顶、拖拽、多选、删除 SSSearcher仿微信搜索联系人,高亮搜索检索匹配...

osc_5ncz8ucr
2018/07/11
3
0

没有更多内容

加载失败,请刷新页面

加载更多

跨越了6个阶段,我仍然是生物信息学初学者

首先非常欢迎大家分享自己与生物信息学/生信技能树的故事! 上一期是:我如何从生物科学到生物信息 这一期是我在朋友圈看到了我们单细胞天地常驻编辑周运来的真情流露,邀请他投稿的我们生信...

biotrainee
前天
17
0
网飞是如何运用心理学来完善其客户体验的

原文地址:https://36kr.com/p/5289228 译者:俊一 占据全球网站流量 15%的奈飞,其用户体验设计背后有哪些秘密? 神译局是 36 氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍...

高行
02/08
23
0
shell编程中的循环脚本

本文中的部分脚本来源于网络,就不申明原创了,如果这些东西自己学会了,那就是属于自己的了。 求从1加到100的和 使用for循环求和: #!/bin/bash declare -i sum=0 for ((i=1;i<=100;i++));...

Double_冬
2018/08/16
14
0
智能合约:介绍、geth、Ethereum Wallet

从看雪论坛换了一本《智能合约安全分析和审计指南》,看了一些智能合约相关的内容,因为我之前对于区块链的了解仅仅是只知道世界上有一种叫做比特币的东西,所以对于这些概念的理解还是比较困...

yichen115
04/26
9
0
Vue和React技术风格上的不同

在主流框架中,Vue和React都属于全球热门,各自有着大量用户,两者之间的优缺点便带来了众多讨论。 那么这两者之间的关键区别在于哪些方面?为何熟练掌握Vue成为越来越多公司的岗位要求? Vu...

若川
07/02
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部