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.
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.
Per qualsiasi problema commentate. Grazie.