Creare una view visible solo al primo avvio dell’applicazione

Nello scorso tutorial abbiamo imparato come poter salvare lo stato dell’applicazione attraverso NSUserDefault, ma per fini pratici abbiamo detto ben poco. Con questo tutorial vi spiegherò come poter visualizzare un view personalizzata al primo avvio dell’applicazione e poi mai più. Una sorta di view introduttiva.

primo avvio intro view

Non abbiamo bisogno di un progetto particolare quindi useremo una semplice Utility application.

Una volta creato e salvato il progetto ci spostiamo nel MainViewController.h e dichiariamo il metodo che ci servirà per gestire l’inizializzazione.

[code lang=”obj-c”]-(void)inizializza;[/code]

Una volta fatta la dichiarazione non dobbiamo fare altro che procedere con l’implementazione nel file MainViewController.m

[code lang=”obj-c”]-(void)inizializza{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

if (![prefs objectForKey:@"primoAvvio"]){
//mai avviato
UIView *viewBenvenuto = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
viewBenvenuto.backgroundColor = [UIColor grayColor];
UILabel *labelBenvenuto=[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 50)];
labelBenvenuto.text=@"Benvenuto";
labelBenvenuto.textAlignment=UITextAlignmentCenter;
[viewBenvenuto addSubview:labelBenvenuto];
[self.view addSubview:viewBenvenuto];

//salviamo lo status
[prefs setObject:[NSNumber numberWithBool:YES] forKey:@"primoAvvio"];
}
else {
UILabel *labelBenvenuto=[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 50)];
labelBenvenuto.text=@"Bentornato";
labelBenvenuto.textAlignment=UITextAlignmentCenter;
[self.view addSubview:labelBenvenuto];
}

[[NSUserDefaults standardUserDefaults] synchronize];
}
[/code]

Abbiamo due azioni differenti regolate da un if-else in base all’esistenza della chiave “primoAvvio”. In caso di NO procediamo con la creazione via codice di una sotto view che contiene la label di benvenuto. Altrimenti inseriamo la label di bentornato.

Gli oggetti sono stati creati via codice visto che richiedevano pochi parametri d’implementazione, ma nulla ti vieta di fare il tutto da interfaccia grafica e poi richiamarne la visualizzazione all’interno del metodo.

Dopodiché non dobbiamo fare altro che richiamarlo nel viewDidLoad

[code lang=”obj-c”]- (void)viewDidLoad
{
[super viewDidLoad];

[self inizializza]; //richiama il metodo di introduzione
}[/code]

Abbiamo concluso. Vi allego il codice sorgente di esempio.

download codice sorgente