Il pattern Model-View-Controller

di il
1 risposte

Il pattern Model-View-Controller

Ciao a tutti,
apro questo thread per parlare del pattern Model-View-Controller che stà alla base dell' interazione tra oggetti grafici e codice in iOS quando si usano le GUI. Riepilogo rapidamente cosa dice questo pattern, poi mi piacerebbe discutere il suo uso pratico in iOS.

Questo pattern arriva da Smaltalk ma si trova anche in Java Swing o in NetFramework, si propone di disaccoppiare gli oggetti che si occupano dei dati dalla loro rappresentazione grafica. Si usano tre entità, il Model, Il View e il Controller.

Il Model:
Il cuore dell' applicazione viene fatto attraverso il model, si occupa dell' accesso ai dati e non si occupa della sua rappresentazione, ma espone solo i dati attraverso delle property. Eventualmente può avere la responsabilità di notificate al View una modifica dei dati richiesta dal Controller.

Il View:
Solo la View si occupa della rappresentazione di dati, e dell' interazione con l' utente attraverso la GUI. La View lascia al controller l' esecuzione delle azioni richieste dall' utente e la scelta delle eventuali schermate.

Il Controller:
Coordina l' interazione tra gli altri due, trasforma gli input ricevuti dalla View in azioni da eseguire sul model. Inoltre agisce sulla View ad esempio selezionando le schermate. In pratica implementa la logica di controllo dell' applicazione.

Per fare un esempio pratico un classe 'Button' non deve sapere nulla dei dati che verranno manipolati quando il bottone viene premuto. Allo stesso modo una classe che si occupa di gestire dei dati non deve contenere nulla che si occupa del loro disegno o dell' interazione con l' utente.

Dopo tutte queste belle parole mi piacerebbe capire come tutto questo viene usato in iOS.

1 Risposte

  • Re: Il pattern Model-View-Controller

    Quando creiamo una nuova applicazione per iOS, ad esempio una Single View Application vengono creati in automatico tre elementi.

    - MainStoryboard.storyboard
    - ViewController.h
    - ViewController.m

    Se entriamo nello stroryboard troviamo la View dentro alla quale possiamo inserire i vari controlli, ad esempio una Label o un Button.

    Se però lanciamo l' applicazione vediamo che questi controlli non fanno nulla. Per renderli attivi abbiamo bisogno di utilizzare il controller.

    Premiamo il pulsate Show Assistant Editor in alto a destra, dividerà la finestra in due mostrando ViewController.H a fianco dello storyboard.

    A questo punto possiamo trascinare la label o il button usando il tasto desto del mouse (si vedrà una riga blu) all' interno del file ViewController.h e poi riempire i campi che ci vengono proposti.

    Col button si creera una action, il cui codice potrà poi essere completato nel file ViewContrellorer.m, ad esempio:
    
    - (IBAction)buttonStart:(id)sender {
        label1.text = @"hello";
    }
    
    Con questo esempio si crea un form in cui premendo un pulsante si scrive 'Hello' in una label.
Devi accedere o registrarti per scrivere nel forum
1 risposte