Abbiamo visto come riempire le UIPickerView usando sia un NSArray sia usando un NSDictionary.

Abbiamo anche visto che leggere un file di testo.

A questo punto mettiamo tutto insieme: da un file di testo riempiamo l'NSDictionary che viene usato dal nostro UIPickerView.

Il file di testo sarà una cosa del genere:

s.c.c. a r.l.;Società Cooperativa Consortile a responsabilità limitata
S.p.A.;Società per Azioni
N.A.;National Association
Cons. a.e.;Consorzio con attività esterna
Cons.;Consorzio
S.c.r.l.;Società Cooperativa responsabilità limitata
soc. consort. n c.;Società Consortile in nome collettivo
coop. soc.;Cooperativa sociale
p. soc. coop.;Piccola Società Cooperativa
s.r.l. unico socio;Società a responsabilità limitata con unico socio
soc. coop. agricola;Società Cooperativa Agricola
S.p.A. Socio Unico;Società per Azioni con Socio Unico
s.r.l. unipersonale;Società unipersonale a responsabilità limitata
L.L.C.;Limited Liability Company
s.a.s.;Società in accomandita semplice
soc. coop. p.A. r.l.;Società cooperativa per Azioni a responsabilità limitata
Soc. Mutua Ass.;Società di Mutua Assicurazione
Cons. a gar. l.;Consorzio a garanzia limitata
Ente Morale;Ente Morale
GmbH;Geselschaft mit Beschränkter Haftung

In pratica ogni riga la spezziamo al punto e virgola e la parte di sinstra sarà la chiave, mentre quella di stra il valore visto sullo schermo.

Prima di tutto aggiungete il file al progetto.

Poi questo sarà il file .h:

#import <UIKit/UIKit.h>

@interface ControllerAziendaReg : UIViewController {    
    NSMutableDictionary *dictionaryForma;
    NSArray *splitArray;
    NSMutableArray *keysForma;
    NSMutableArray *objectsForma;
    NSString *fileTxt;
    NSString *textFromFile;
    UIActionSheet *sheetForma;
}

@property (retain, nonatomic) IBOutlet UIPickerView *pickerForma;

@end

Il file .m ve lo spezzo in modo da rendere più chiaro il tutto.

Nel precedente articolo su Obj-C avevo analizzato come usare le UIPickerView.

In quel caso abbiamo usato un semplice NSArray.

Non che sia sbagliato, ma nel caso specifico ho la necessità di rendere il componente più simile a una <select> HTML, dove il valore reale non è uguale a quello visualizzato.

Per ottenere questo comportamento dobbiamo impostare come sorgente dati non un NSArray, ma un NSDictionary.

Quindi nel file .h:

#import <UIKit/UIKit.h>

@interface ControllerAziendaReg : UIViewController {    
    NSDictionary *dictionaryForma;
    NSArray *keysForma;
    NSArray *objectsForma;
    UIActionSheet *sheetForma;
}

@property (retain, nonatomic) IBOutlet UIPickerView *pickerForma;

@end

Un oggetto di tipo NSDictionary è composto di due parti: una chiave alla quale corrisponde un valore.

Queste due componenti le comporremo attrverso due NSArray.

L'oggetto UIPickerView viene usato per rappresentare dei valori tra i quali scegliere; un pò come i menu a tendina nei siti web per intenderci.

Solo che non basta trascinare un oggetto nello Storyboard o nel .xib per usarlo.

Siamo noi che dobbiamo impostarlo.

Prima di tutto trasciniamo un componente UIPickerView nello Storyboard.

Impostiamo tutte le proprietà che ci interessano (colore, carattere, ecc....) e infine agganciamolo al controller attraverso Interface Builder.

Questo sarà l'header del controller:

#import <UIKit/UIKit.h>

@interface ControllerAziendaReg : UIViewController {
    NSMutableArray *arrForma;
}

@property (retain, nonatomic) IBOutlet UIPickerView *pickerForma;

@end

L'oggetto NSMutableArray ci servrà per riempire il picker.