iOS開發- 介面傳值(1)-通知模式(廣播)

來源:互聯網
上載者:User

之後的幾篇部落格, 記錄下不同介面間傳值的常用辦法。

這篇文章記錄廣播的方式。

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];    }


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.