Corso interattivo di programmazione per iPhone: VI Lezione. Applicazione grafica

In questa lezione vi spiegherò come fare un’applicazione che visualizza una lista di oggetti; dopo averli selezionati sarà possibile visualizzare un’ immagine.

corsoiphoneitalia

Creiamo il nuovo progetto, che chiamero` “Automobili”.

picture-1

Creo un oggetto Car. Questo oggetto avra` queste proprieta`: Nome della macchina, Nome del file dell’ immagine della macchina.

picture-51Ecco l’ interfaccia dell’ oggetto Car.

Per accedere ai vari oggetti della classe “bisognerebbe” implementare un oggetto per cambiare la stringa e un altro oggetto per avere il valore di quella stringa.

Nel caso di NSString *carName:

setCarName:(NSString*)    e   (NSString*)carName;

E` possibile evitare di implementare questi metodi tramite la funzione @property, in questo modo.

picture-62

Per fare in modo che in preprocessing vengano automaticamente implementati i metodi di set e get bisognera` utilizzare l’ opzione @synthesize

picture-65

Per accedere alla stringa “carName” bisognera` scrivere “car.carName”

—————————————-

Ad esempio:

Car *car = [[Car alloc] init];

car.carName = @”Alfa Romeo MiTo”;

NSLog(“%@”,car.carName);

—————————————–

Ora apriamo Interface Builder

picture-11

Una volta aperto vediamo la finestra dove “disegnare” l’ interfaccia.

picture-23

picture-4

Trasciniamo come prima cosa una UIView e poi un oggetto UITableView

picture-52

Ecco il risultato finalepicture-63

Salviamo premendo Command + S o cliccando su Save.

picture-7

Bene. Ora dobbiamo istruire la tabella, che ora come ora e` solo un oggetto “senz’anima”, in modo da riempirsi delle scritte che vogliamo. Il concetto che utilizzeremo e` quello di DataSource, cioe` quello che fara` sara` chiedere le informazione ad una classe specifica. Questo tipo di classi che gestiscono i dati vengono chiamati Controller. Le classi come Car invece si chiamano Modelli. Il codice che si occupa della visualizzazione invece e` la View. Questa organizzazione prende il nome di MVC (Model View Controller).

Creiamo quindi un controller che si occupi SOLO della gestione della tabella. La cosa migliore per l’ organizzazione del codice e del progetto e` quella di isolare le varie componenti.

Chiamero` il controller (la classe) “CarListController”. Questa classe e` una sottoclasse di UITableViewController. (In realta` anche se fosse una sottoclasse di UIView funzionerebbe bene comunque).

picture-24picture-31

Andando sulla documentazione vediamo quali sono i metodi che dobbiamo implementare. Dobbiamo andare a cercare il protocollo UITableViewDataSource. Il concetto di DataSource e` quello di un controller che fornisce le informazioni ad una view (come la tabella) che le richiede.

picture-41picture-53

Vediamo come procedere. Come prima cosa, all’ interno della classe CarListController, voglio creare un NSMutableArray con all’ interno tutti gli oggetti Car che voglio gestire.

picture-64

Voglio che questo oggetto sia inizializzato all’ esecuzione del programma.

Per far questo utilizzo un metodo che si chiama

-(void)awakeFromNib.

picture-72

Importo l’ oggetto Car in modo che possa utilizzarlo

picture-8

Faccio in modo che dopo che l’ array e` stato inizializzato, questo venga riempito di oggetti Car.

picture-9

Ora dobbiamo dire a Interface Builder che vogliamo utilizzare questo controller

picture-10

Inserisco un oggetto generico nella lista degli oggetti.

picture-111Cambio le proprieta` di questo oggetto.

picture-12

Sotto Class scrivo il nome della classe che voglio rappresentare con quell’ oggetto.

picture-13

picture-14

picture-16

Ora dico alla tabella di prelevare le infomazioni dal controller CarListController. Seleziono  la tabella, premo il tasto control e trascino il mouse fino a selezionare il controller CarListController.

tmp

Seleziono l’ opzione DataSource

picture-18

Per concludere dovremo implementare i metodi per comunicare i dati alla tabella.

Implementiamo subito il metodo

– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

Questo metodo deve restituire il numero di elementi presenti nella lista (per ora ignoriamo il concetto di “section”).

picture-42

Ora voglio che vengano elencati gli elementi nell’ array.

Aggiungiamo la scritta

cell.text = [cars objectAtIndex:indexPath.row];

All’ interno del metodo gia` ,parzialmente implementato:

– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

Car *car = [cars objectAtIndex:indexPath.row];
cell.text = car.carName;

picture-25

Ogni riga e` rappresentata da un oggetto rappresentato dalla classe UITableViewCell che ha come proprieta` un oggetto NSString *text, che sara` la stringa che comparira` nella lista.

Ora si parte. Compiliamo ed avviamo.

picture-91

Nella prossima lezione continuero` il progetto Automobili mostrandovi il funzionamento di nuovi oggetti grafici.

Ecco il link del progetto: Automobili_01.zip

NovitàAcquista il nuovo iPhone 16 su Amazon
Dev