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

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

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. Qt 界面使用自己定义控件 &quot;提升为&quot;

    1.效果图 我做了一个很easy的样例,一个能够显示颜色的QLabel,边上有个button,点击,跳出颜色选取的Dialog,然后选择一个颜色.这个QLabel会变成什么颜色. 2.ColorLab ...

  2. android AsyncTask 详细例子(2)

    超时处理 001 import java.util.Timer; 002 import java.util.TimerTask; 003   004 import android.app.Activi ...

  3. sybase从表A创建表B

    sybase从表A创建表B 例如:需要创建一张表B,表的内容及结构跟表A完全一样,类似于SQL SERVER中的CREATE TABLE A AS SELECT * FROM B; 在sybase中只 ...

  4. 使用Express创建一个简单的示例

    1.安装Express 使用npm包安装工具来安装Express安装包,打开npm命令行,输入: npm install -g express 2.创建一个工程 本示例是在windows下创建的,项目 ...

  5. PowerDesigner与UML建模应用

    一.   PD简介 PowerDesigner 是一个集所有现代建模技术于一身的完整工具,它集成了强有力的业务建模技术.传统的数据库分析和实现,以及UML对象建模.通过了元数据的管理.冲突分析和真正的 ...

  6. C#操作Flash动画

    对于在C#开发的过程中没有接触过Flash相关开发的人员来说,没有系统的资料进行学习,那么这篇文档针对于初学者来说是很好的学习DEMO. 本文章中的DEMO实现了C#的COM控件库中本来就带有对fla ...

  7. Asp.net mvc4 + HighCharts + 曲线图

    前端代码: @{ Layout = null;}<!DOCTYPE html><html><head> <title></title> &l ...

  8. js判断是否为空的代码

    方法一: var keyVal= $("#key").val(); if(keyVal==undefined || keyVal=="" || keyVal== ...

  9. HTML5画布(圆形)

    案例1: <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8& ...

  10. dedecms友情链接flink的调用方法

    标记名称:flink[标签简介][功能说明]:用于获取友情链接,其对应后台文件为"includetaglibflink.lib.php".[适用范围]:全局标记,适用V55,V56 ...