2010-09-02 12 views
10

Sto cercando di apprendere la programmazione per l'iPhone e continuo a vedere questi file e non sono sicuro di quando ogni file e il contenuto di quei file si riferiscono all'esecuzione di un programma creato per l'iPhone. Sto cercando di seguire tutorial e suggerimenti disponibili online ma da nessuna parte c'è un confronto punto per punto o qualcosa del genere. Sarebbe bello se qualcuno di voi potesse elencare alcune differenze di base come quando viene fatto riferimento a ciascun file e cosa dovrebbe idealmente andare in ogni file e così via. Grazie per il tuo tempo già.Qual è la differenza tra le classi RootViewController, AppDelegate e View Controller che posso creare?

risposta

47

In generale, i delegati possono essere considerati gestori di eventi. Di conseguenza, AppDelegate è il gestore di eventi principale per l'intera applicazione. Viene detto quando l'applicazione è stata avviata, quando uscirà, quando arriva una notifica Push, quando l'app è passata in background, ecc. Uno di questi eventi - applicationDidFinishLaunching - è generalmente responsabile della creazione della finestra dell'applicazione e dell'aggiunta di viste a quella finestra.

Nella maggior parte delle applicazioni, la vista che viene aggiunta alla finestra è effettivamente controllata da un UIViewController. Ogni UIViewController è responsabile della gestione dell'aspetto di una vista principale più tutte le sue sottoview. Ad esempio, un UITableViewController è responsabile della gestione di UITableView (vista principale) e di tutte le UITableViewCells (sottoview) che vengono inserite in tale UITableView. In genere, UIViewController funge da delegato (gestore di eventi) per le visualizzazioni di cui è responsabile. Quando un utente tocca una cella di visualizzazione tabella, viene chiamato un metodo in UITableViewController. Quando l'utente fa scorrere per eliminare, viene chiamato un metodo separato.

Un UIViewController generico fornisce la stessa funzionalità di base, ma per le visualizzazioni personalizzate. Ad esempio, UIViewController potrebbe essere responsabile della visualizzazione di alcune visualizzazioni di testo e di un pulsante. UIViewController creerebbe la sua vista principale, le viste del testo e la vista del pulsante. Le visualizzazioni di testo e la visualizzazione dei pulsanti verranno aggiunte alla vista principale del controller di visualizzazione come visualizzazioni secondarie. UIViewController si registrerebbe come delegato per gli eventi dalla vista di testo (ad esempio l'apprendimento quando l'utente ha terminato di modificare il testo nella visualizzazione testo). Dovrebbe anche registrare un metodo per gestire una pressa di pulsanti proveniente dal pulsante di sua proprietà. Quando si verifica uno di questi eventi registrati, vengono chiamati i metodi su UIViewController che consentono di intraprendere qualsiasi azione sia necessaria.

rootViewController è un tipo specifico di controller di visualizzazione utilizzato con i controller di navigazione. Se si desidera un'applicazione con la tipica gerarchia di visualizzazione di navigazione iOS, l'AppDelegate di solito aggiunge un UINavigationController alla finestra dell'app. Che UINavigationController è inutile senza avere effettivamente contenuti da visualizzare. È qui che entra in gioco rootViewController. L'utente è responsabile della fornitura di un controller di visualizzazione (come quello descritto sopra) che funge da prima vista memorizzata nella pila di viste di UINavigationController. Questa vista verrà visualizzata all'avvio dell'app e ogni volta che l'utente spegne i ViewController successivi sullo stack di UINavigationController.

Lungo tempo mi rendo conto - ma spero che sia d'aiuto.

+0

Totalmente utile. Grazie. Ho un'altra domanda, e se non è chiedere troppo, sarebbe bello se si potesse dare un'occhiata a questo: http://stackoverflow.com/questions/3651265/sqlite3-step-keeps-returning-sqlite- uso improprio-su-questa-query-qualsiasi-puntatori. Grazie comunque per questa risposta. – kumar

+1

Splendida spiegazione per le relazioni tra AppDelegate, UIWindow, UIViewController, vista principale, sottoview, ecc. Ancora valido alla fine del 2012. Grazie mille – Philip007

+0

Grazie a @Peter, sicuramente una delle spiegazioni più utili e concise del ruolo di ogni tipo di oggetti. Grazie. –

Problemi correlati