本篇文章将介绍界面传值的第三个方法:通知.
对于通知,我们可以用一个形象的比喻来形容,假设有这么一个小区,小区内部有一公示栏,小区物业想要通知大家把窗帘都换成绿色的,该怎么办呢?物业当然可以安排工作人员一家一家的告知,但是这显然不是最明智的,最简单的方法是在公示栏上面张贴一个通知,通知的内容就是告诉大家要在某年某月某日之前把自家的窗帘都换成绿色,所有的业主,在进入小区的时候看到这样一通知后,就知道了物业的这一要求,然后就会实现这件事情就可以了.
而我们ios的通知的原理和流程其实很类似这个小区公示栏的作用,下面我看看是如何实现的.
首先我们需要有三个viewcontroller 通过导航视图控制器来管理,每个页面给定一个背景颜色,另外我们在第三个页面添加一个按钮,效果如下:
最终我们要实现的效果是,点击第三页的按钮,可以改变前两个页面的背景颜色,
第二步:我们要在这个按钮的点击事件里面添加注册通知的方法
-(void)btnClick:(UIButton *)sender{
[[NSNotificationCenter defaultCenter] postNotificationName:@"changeColor" object:nil userInfo:@{@"color":[UIColor blueColor]}];
}
这段代码就相当于物业在公告栏上面张贴的通知,在刚才的比喻里面我们需要注意的是,只有本小区的业主才需要遵守通知的要求,非本小区业主是不需要理会的,同样在ios里面,不是每一页面都要去做响应通知的操作,只有这个页面在通知中心添加观察者后,才可以执行相应的操作,代码如下,可以写到viewdidload里面
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(changecolor:) name:@"changeColor" object:nil];
然后我们需要去实现changcolor的方法
-(void)changecolor:(NSNotification *)sender{
self.view.backgroundColor = sender.userInfo
[@"color"];
}
这样我们就实现了通知传值.