Comunicazione tra oggetti in Objective-C: le notifiche

Le notifiche si usano quando abbiamo bisogno che un oggetto in una classe sia condivisa con altri oggetti in altre cassi. Per capire meglio facciamo un esempio pratico. Apriamo XCode>Single View App, creiamo 2 classi di UIViewController(FirstViewController e SecondViewController) e nello storyboard inseriamo 2 ViewController.Nello storyboard colleghiamo le ViewController con le 2 classi che abbiamo creato. Inseriamo un bottone nel primo(pushSecondview) e un bottone nel secondo(Notifica). Al primo bottone li diamo un azione push tramite storyboard per semplificare le cose. Selezioniamo il primo ViewController e andiamo su Editor>Embed In>Navigation Controller.

nsnotificationcenter

Fatto questo apriamo il file SecondViewController  e inseriamo un metodo:

[code lang=”obj-c”]
-(IBAction)sendNotification:(id)sender;
[/code]

nel file di implementazione  inseriamo :

[code lang=”obj-c”]
-(IBAction)sendNotification:(id)sender
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"postName" object:nil];
}
[/code]

Colleghiamo Ibaction con il bottone nel secondo ViewController aprendo storyboard.
Nel file PrimoViewController.h importiamo la seconda classe:

[code lang=”obj-c”]
#import <UIKit/UIKit.h>
#import "SecondViewController.h"
@interface FistViewController : UIViewController
{
SecondViewController *secondVC;
}
@end
[/code]

apriamo il file del implementazione  e nel metodo viewDidLoad inseriamo:

[code lang=”obj-c”]
– (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificaOperazioneTerminata) name:@"postName" object:nil];
}
[/code]

Abbiamo chiamato un selettore come metodo per quando la notifica viene terminata , quindi inseriamo anche il metodo :

[code lang=”obj-c”]
-(void)notificaOperazioneTerminata
{
self.view.backgroundColor = [UIColor redColor];
}
[/code]

in questo caso quando viene premuto il bottone nel secondo view controller, nel primo view controller cambia il colore dello sfondo.

Testiamo il progetto e confrontiamolo con quello del tutorial.

download codice sorgente

Per qualsiasi problema commentate. Grazie.