之后的几篇博客, 记录下不同界面间传值的经常使用办法。

这篇文章记录广播的方式。

iOS的设计模式中,通知模式也是当中重要的模式之中的一个,
Notification直译为通知,事实上本人认为叫做广播模式更为贴切。
它的作用就是一个对象对多个对象的同步操作。
使用方法非常easy,一个对象发出一个广播,须要收听的听众就先注冊一下,然后选定频道,完了就能够收听广播的内容了。

可是要注意一点, 在收听之前, 一定要先注冊。 不然发送的广播接受不到, 也就是值改变了, 不会做出响应。

以下是一个简单的demo, 效果例如以下:

第一个界面, 做为听众, 注冊收听广播。

第二个界面, 做为广播, 发送广播。

当第二个界面发出一个广播后, 第一个界面自己主动接收。

能够參考git上的源代码:

https://github.com/colin1994/NotificationTest.git

详细实现例如以下:

第一个界面, 注冊成为听众, 并设置收到广播后的响应事件:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. // 我们喜欢听ChangeTheme的广播
// 注冊成为广播站ChangeTheme频道的听众
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; // 成为听众一旦有广播就来调用self recvBcast:函数
[nc addObserver:self selector:@selector(recvBcast:) name:@"ChangeTheme" object:nil];
} // 这个函数是系统自己主动来调用
// ios系统接收到ChangeTheme广播就会来自己主动调用
// notify就是广播的全部内容
- (void) recvBcast:(NSNotification *)notify
{ static int index;
NSLog(@"recv bcast %d", index++); // 取得广播内容
NSDictionary *dict = [notify userInfo];
NSString *name = [dict objectForKey:@"ThemeName"];
UIColor *c = [dict objectForKey:@"ThemeColor"]; self.title = name; self.view.backgroundColor = c; }

第二个界面, 发送广播

- (IBAction)btnClick:(id)sender
{
// 取得ios系统唯一的全局的广播站 通知中心
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; //设置广播内容
NSString *name = @"设置颜色";
UIColor *color_ = [UIColor redColor];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
name, @"ThemeName",
color_, @"ThemeColor", nil]; //将内容封装到广播中 给ios系统发送广播
// ChangeTheme频道
[nc postNotificationName:@"ChangeTheme" object:self userInfo:dict]; }

iOS开发- 界面传值(1)-通知模式(广播)的更多相关文章

  1. iOS开发中UILocalNotification本地通知实现简单的提醒功能

    这段时间项目要求做一个类似的闹钟提醒功能,对通知不太熟悉的我,决定先用到xcode自带的本地通知试试,最终成功的实现了功能,特整理分享下. 它的表现特点: app关闭的时候也能接收和显示通知. app ...

  2. iOS UI08_TableView界面传值

    实现两个界面之间内容的传递 // // MainViewController.m // UI08_TableView界面传值 // // Created by dllo on 15/8/7. // C ...

  3. IOS开发中如何使用通知NSNotification传值

    通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便.便捷,一个简单的Demo实现通知的跳转传值. 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IB ...

  4. ios开发逆向传值的几种方法整理

    第一种:代理传值 第二个控制器: @protocol WJSecondViewControllerDelegate <NSObject> - (void)changeText:(NSStr ...

  5. iOS 开发之 生产者与消费者模式及其实现

    概念: 在工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产者:而处理数据的 ...

  6. ios开发之通知事件

    每天学习一点点,总结一点点,成功从良好的习惯开始! 昨天学习了ios开发中的关于通知事件的一些东西,在这里简单总结下,仅供初学者学习,更多的是怕我自己忘了,咩哈哈~~~~ 通知(notificatio ...

  7. ios开发 学习积累20161027~20161031

    前言 学习ios这几天来,总结下,函数的定义,调用.跟其他语言都有一定的区别: 几个特别重要的就是对象的迭代的使用和判断.取随机数.动画的实现及数组的深入研究等等 之前的总结地址 ios开发 学习积累 ...

  8. iOS开发——代码生成TabBar与视图切换具体解释

    我在之前多篇博客中解说了在不使用storyboard而使用nib文件的情况下.使用代码生成导航栏并进行跳转,具体能够參考<iOS开发--界面跳转与返回及视图类型具体解释><iOS纯代 ...

  9. 通知模式实现两个textField传值及模态视图——iOS开发

    通知模式实现两个textField传值及模态视图--iOS开发 利用通知模式,实现两个不同界面的textField之间的传值,在界面二输入字符,传值到前一界面的textField. 界面的切换,这里临 ...

随机推荐

  1. Linux 时间同步配置(转)

    一. 使用ntpdate 命令 1.1 服务器可链接外网时 # crontab -e 加入一行: */1 * * * * ntpdate 210.72.145.44 210.72.145.44 为中国 ...

  2. 关于java中根据身份证求生日和年龄的问题

    /*这个也没什么大的功能,也没什么安全验证,只是对输入的身份证号码的长度进行了验证.其他的功能可以自己添加.*/import java.util.*; import java.util.Scanner ...

  3. Localdb Attach Problem

    在进行code first的迁移时,update-database后默认在App_data文件夹下会新建数据库,如果删除了在使用update-database命令会出现以下错误: Cannot att ...

  4. BZOJ 3926 && ZJOI 2015 诸神眷顾的幻想乡 (广义后缀自动机)

    3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MB Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽 ...

  5. c#鼠标在控件上面,然后显示文字

    先添加toolTip控件到界面 然后每个控件的属性会多一项 ToolTip 第一种:直接给里面加文字 第二种: private void pictureBox_topmost_MouseHover(o ...

  6. [Search Engine] Compression in Inverted Index

    最近在学一些搜索引擎的内容,感觉挺费劲,所以就用博客当做自己的笔记,遇到一些需要整理的部分,就在这里整理一下. 今天的内容是对inverted index进行压缩.核心思想,用我自己的话来总结,就是“ ...

  7. 火狐的bug

    初次启动火狐的界面并且默认是最大化的情况下,第一个业签时会发现火狐的浏览器无法达到下边框,请看图 途中可以看到,body区域没有填充满浏览器可用区域.但是当浏览器已经启动页签,现在是第二个页签时,则不 ...

  8. 字符串:格式化 - 零基础入门学习Python015

    字符串:格式化 让编程改变世界 Change the world by program 字符串:格式化 上节课我们介绍了Python字符串的N多种奇葩方法的用法,但我们唯独漏了一个format()方法 ...

  9. 库函数 Math

    int abs( int num ); double fabs( double arg ); long labs( long num ); 函数返回num的绝对值   #include <mat ...

  10. 最长公共子序列--nyoj36

    最长公共子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列.tip:最长公共子序列也称作最 ...