[oc学习笔记]通知中心传值的使用
2015-06-24 17:53
330 查看
通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便、便捷,一个简单的Demo实现通知的跳转传值.
输入所要发送的信息 ,同时将label的值通过button方法调用传递,
- (IBAction)buttonClick:(id)sender {
//添加 字典,将label的值通过key值设置传递
NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"textOne",self.textFieldTwo.text,@"textTwo", nil];
//创建通知
NSNotification *notification
=[NSNotification notificationWithName:@"tongzhi" object:niluserInfo:dict];
//通过通知中心发送通知
[[NSNotificationCenter defaultCenter] postNotification:notification];
[self.navigationController popViewControllerAnimated:YES];
}
在发送通知后,在所要接收的控制器中注册通知监听者,将通知发送的信息接收
- (void)viewDidLoad {
[super viewDidLoad];
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tongzhi:) name:@"tongzhi"object:nil];
}
- (void)tongzhi:(NSNotification *)text{
NSLog(@"%@",text.userInfo[@"textOne"]);
NSLog(@"-----接收到通知------");
}
移除通知:removeObserver:和removeObserver:name:object:
其中,removeObserver:是删除通知中心保存的调度表一个观察者的所有入口,而removeObserver:name:object:是删除匹配了通知中心保存的调度表中观察者的一个入口。
这个比较简单,直接调用该方法就行。例如:
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:observer name:nil object:self];
[super dealloc];
}
注意参数notificationObserver为要删除的观察者,一定不能置为nil。
输入所要发送的信息 ,同时将label的值通过button方法调用传递,
- (IBAction)buttonClick:(id)sender {
//添加 字典,将label的值通过key值设置传递
NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"textOne",self.textFieldTwo.text,@"textTwo", nil];
//创建通知
NSNotification *notification
=[NSNotification notificationWithName:@"tongzhi" object:niluserInfo:dict];
//通过通知中心发送通知
[[NSNotificationCenter defaultCenter] postNotification:notification];
[self.navigationController popViewControllerAnimated:YES];
}
在发送通知后,在所要接收的控制器中注册通知监听者,将通知发送的信息接收
- (void)viewDidLoad {
[super viewDidLoad];
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tongzhi:) name:@"tongzhi"object:nil];
}
- (void)tongzhi:(NSNotification *)text{
NSLog(@"%@",text.userInfo[@"textOne"]);
NSLog(@"-----接收到通知------");
}
移除通知:removeObserver:和removeObserver:name:object:
其中,removeObserver:是删除通知中心保存的调度表一个观察者的所有入口,而removeObserver:name:object:是删除匹配了通知中心保存的调度表中观察者的一个入口。
这个比较简单,直接调用该方法就行。例如:
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:observer name:nil object:self];
[super dealloc];
}
注意参数notificationObserver为要删除的观察者,一定不能置为nil。
相关文章推荐
- Thunderbird Mail 支持 Microsoft Exchange
- FME2014汉化问题
- leetcode-10Regular Expression Matching
- SQL Server 一些知识点
- 对IT知识知识的学习不是兴趣,,而是对技术的信仰!
- Git提交本地库代码到远程服务器的操作
- 排序算法系列之快排
- Linux内核中内存相关的操作函数-2
- hibernate 多对一,一对多
- USB传输方式的一些总结
- 视差滚动特效图片滑块-Sequence.js
- OCP-1Z0-051-2015-18题
- jQuery寻找n以内完全数的方法
- emWin+touch移植到STM32战舰开发板
- Java GUI程序设计的初步上
- Linux中grep
- GRE词汇记忆备考常见误区
- OCP-1Z0-051-2015-17题
- 排序算法系列之选择排序
- IAP的几个问题