iOS开发- 界面传值 1 -通知模式 广播

               

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

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

iOS的设计模式中,通知模式也是其中重要的模式之一,
Notification直译为通知,其实本人觉得叫做广播模式更为贴切。
它的作用就是一个对象对多个对象的同步操作。
用法很简单,一个对象发出一个广播,需要收听的听众就先注册一下,然后选定频道,完了就可以收听广播的内容了。

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

下面是一个简单的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];    }


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值