国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

IOSNSNotificationCenter通知中心的使用

2019-11-14 18:39:49
字體:
來源:轉載
供稿:網友

  通知中心,它是IOS程序內部的一種消息廣播機制,通過它,可以實現無引用關系的對象之間的通信。通知中心他是基于觀察者模式,它只能進行程序內部通信,不能跨應用程序進程通信。當通知中心接受到消息后會根據設置,將消息發送給訂閱者,這里的訂閱者可以有多個。

  通知中心與代理模式類似,都可以實現多個對象間通信,通知中心可以將一個通知發送給多個監聽者,而代理模式每個對象只能添加一個代理。但無論是那種模式,都是一種低耦合的設計,實現對象間的通信。

使用通知中心的步驟

1、注冊觀察者對某個事件(以字符串命名)感興趣,并設置該事件觸發時執行的Selector或Block

2、NSNotificationCenter在某個時機激發事件(以字符串命名)

3、觀察者在收到感興趣的事件時,執行相應地Selector或Block

4、移除通知

通知中心案例

  利用導航添加三個界面,在第三個界面上添加一組按鈕,當點擊按鈕的時候,設置當前頁面背景色為按鈕顏色,并發送通知,將前面兩個界面背景色也設置為選擇的顏色,程序框架和界面如圖所示

 

  (1)注冊通知,在界面三的viewDidLoad方法中,為界面一和界面二注冊通知,當發送通知的時候,會去界面一和界面二中調用對應的方法

  界面三中代碼:

- (void)viewDidLoad {    [super viewDidLoad];        SecondViewController *secondVC = [self.navigationController.viewControllers objectAtIndex:1];    ViewController *firstVC = [self.navigationController.viewControllers firstObject];    //注冊通知    [[NSNotificationCenter defaultCenter] addObserver:secondVC selector:@selector(changeBgColor:) name:kNotificationName object:nil];    [[NSNotificationCenter defaultCenter] addObserver:firstVC selector:@selector(changeBgColor:) name:kNotificationName object:nil];}

  ps:kNotificationName 是通過宏定義定義的字符串

 

  (2)    在界面三點擊顏色按鈕時,換背景色,并且給界面一和界面二發送通知

  界面三中代碼:

- (IBAction)chooseBgColor:(UIButton *)sender {     NSArray *colorArray = @[[UIColor redColor],[UIColor blueColor],[UIColor greenColor],[UIColor purpleColor],[UIColor whiteColor],[UIColor blackColor],[UIColor orangeColor],[UIColor yellowColor],[UIColor brownColor]];        self.view.backgroundColor = [colorArray objectAtIndex:sender.tag-1];        //引發通知    [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationName object:[colorArray objectAtIndex:sender.tag-1]];  }

 

  (3)在界面一和界面二中處理通知,更改界面背景色

  界面一和界面二中代碼:

-(void)changeBgColor:(NSNotification *)notification{    [self.view setBackgroundColor:notification.object];}


 ?。?)在界面三移除通知,移除通知一般在重寫父類的dealloc方法,但是arc方式下,在dealloc方法中不能調用父類的dealloc方法

  界面三中代碼:

-(void)dealloc{     [[NSNotificationCenter defaultCenter] removeObserver:kNotificationName];}

 

  想要了解更多內容的小伙伴,可以點擊查看源碼,親自運行測試。

  疑問咨詢或技術交流,請加入官方QQ群:JRedu技術交流 (452379712)

 

作者:杰瑞教育
出處:http://www.survivalescaperooms.com/jerehedu/ 
本文版權歸煙臺杰瑞教育科技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通州区| 葫芦岛市| 商都县| 万年县| 平安县| 大田县| 当阳市| 黄陵县| 句容市| 招远市| 石泉县| 长岭县| 庆城县| 蕲春县| 定襄县| 会东县| 勃利县| 雷波县| 大足县| 安新县| 漳平市| 江门市| 儋州市| 鹤庆县| 沙雅县| 府谷县| 恩平市| 潞城市| 镶黄旗| 海口市| 泰和县| 屯门区| 寿光市| 潞西市| 卢龙县| 含山县| 星座| 合水县| 和硕县| 伊宁市| 阳谷县|