2009-06-28 14 views
7

In Xcode, il modello di utilità applicazione effettua una progetto con:Come scegliere quale codice inserire in una View vs. un ViewController?

MainView, MainViewController

e

FlipsideView, FlipsideViewController

Nella mia app, le due viste corrispondono all'interfaccia utente principale e una schermata delle preferenze. Ovviamente voglio che i prefs vengano riflessi nell'interfaccia utente principale e mantenuti su disco per ricordare le impostazioni. So come fare quella parte.

Il problema è che, mentre osservo il codice di esempio di app simili, vedo che alcuni mettono la maggior parte del codice attivo in una vista, lasciando il ViewController poco più di uno stub, altri ancora lo fanno al contrario.

Esiste una regola generale per decidere dove mettere la maggior parte delle mie funzionalità?

risposta

2

Un modo per decidere: se l'app riceve un avviso di memoria insufficiente, il comportamento predefinito è che qualsiasi vista che non è attualmente visibile potrebbe essere distrutta. Ciò significa che se si dispone di informazioni sullo stato che non è possibile ricreare facilmente, è meglio non tenerlo nella propria visualizzazione.

Quindi dipende dalla maggior parte delle funzionalità: se mantiene le informazioni create dall'utente, deve essere nel controller della vista.

2

Se si vuole essere puristi di MVC, cose come la commutazione della vista e la gestione degli eventi dovrebbero andare nel controller e il codice di creazione della vista nella vista.

Ma è corretto mettere qualche logica dell'app nella vista, se si è coerenti su tutta l'app.

+0

Sono d'accordo sul fatto che generalmente solo il codice di costruzione delle viste appartiene alla classe vista. E spesso non è necessario alcun codice per la creazione di viste, quindi puoi eliminare completamente la classe di visualizzazione. –

1

Ci sono già diverse domande su StackOverflow che coprono il modello-vista-controller. Ad esempio, vedi What goes into the "Controller" in "MVC"?.

Nel tuo scenario specifico, le preferenze stesse sono un tipo di modello che tiene traccia delle preferenze dell'utente. Salvare e caricare queste preferenze è compito del controller. Mostrare quelle preferenze e dare all'utente un modo per cambiarle è il dovere della vista. Infine, quando un utente modifica tali preferenze, la vista riporta questo al controller, il che apporta le modifiche appropriate al modello.

Problemi correlati