iOS 廣播模式

以後的幾篇博客, 記錄下不一樣界面間傳值的經常使用辦法。html

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

iOS的設計模式中,通知模式也是其中重要的模式之一,
Notification直譯爲通知,其實本人以爲叫作廣播模式更爲貼切。
它的做用就是一個對象對多個對象的同步操做。
用法很簡單,一個對象發出一個廣播,須要收聽的聽衆就先註冊一下,而後選定頻道,完了就能夠收聽廣播的內容了。
git

可是要注意一點, 在收聽以前, 必定要先註冊。 否則發送的廣播接受不到, 也就是值改變了, 不會作出響應。github

下面是一個簡單的demo, 效果以下:設計模式

第一個界面, 作爲聽衆, 註冊收聽廣播。函數

第二個界面, 作爲廣播, 發送廣播。post

當第二個界面發出一個廣播後, 第一個界面自動接收。spa




能夠參考git上的源碼:.net

https://github.com/colin1994/NotificationTest.git
設計

具體實現以下:

第一個界面, 註冊成爲聽衆, 並設置收到廣播後的響應事件:

view sourceprint?

01.- (void)viewDidLoad

02.{

03.[super viewDidLoad];

04.// Do any additional setup after loading the view, typically from a nib.

05. 

06.// 咱們喜歡聽ChangeTheme的廣播

07.// 註冊成爲廣播站ChangeTheme頻道的聽衆

08.NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

09. 

10.// 成爲聽衆一旦有廣播就來調用self recvBcast:函數

11.[nc addObserver:self selector:@selector(recvBcast:) name:@"ChangeTheme" object:nil];

12.}

13. 

14. 

15.// 這個函數是系統自動來調用

16.// ios系統接收到ChangeTheme廣播就會來自動調用

17.// notify就是廣播的全部內容

18.- (void) recvBcast:(NSNotification *)notify

19.{

20. 

21.static int index;

22.NSLog(@"recv bcast %d", index++);

23. 

24.// 取得廣播內容

25.NSDictionary *dict = [notify userInfo];

26.NSString *name = [dict objectForKey:@"ThemeName"];

27.UIColor *c = [dict objectForKey:@"ThemeColor"];

28. 

29.self.title = name;

30. 

31.self.view.backgroundColor = c;

32. 

33.}



第二個界面, 發送廣播

view sourceprint?

01.- (IBAction)btnClick:(id)sender

02.{

03.// 取得ios系統惟一的全局的廣播站 通知中心

04.NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

05. 

06.//設置廣播內容

07.NSString *name = @"設置顏色";

08.UIColor *color_ = [UIColor redColor];

09.NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:

10.name, @"ThemeName",

11.color_, @"ThemeColor", nil];

12. 

13.//將內容封裝到廣播中 給ios系統發送廣播

14.// ChangeTheme頻道

15.[nc postNotificationName:@"ChangeTheme" object:self userInfo:dict];

16. 

17.}

相關文章
相關標籤/搜索