Chi è responsabile dell'impostazione del colore in MVVM?

3

Ho un'app iOS in cui, dopo aver superato un determinato limite, parte dell'interfaccia utente cambia colore per avvisare l'utente. Sto usando MVVM per realizzare questo e la divisione del lavoro si presenta così:

M odel: recupera il valore limite e dallo spazio di archiviazione

V iew M odel: confronta il limite con il valore corrente e passa il bool (over / under limit flag)

V iew: scegli un colore in base al flag limite e impostalo sulle viste richieste (questo lavoro viene eseguito su un controller).

Ho iniziato a chiedermi se la selezione del colore per le viste non è il lavoro di un modello di visualizzazione. Se dividi MVVM in M (VC) VM, forse può essere inserito nella sottoclasse di UIView invece di UIViewController. Dov'è il posto dove selezionare un colore reale? E perché?

    
posta Tomasz Bąk 30.09.2015 - 14:31
fonte

1 risposta

6

La Vista è il luogo che ha una conoscenza approfondita dell'ambiente grafico runtime, del modo in cui il colore è espresso in esso e anche del fatto che stai effettivamente eseguendo all'interno di un ambiente di runtime grafico e non come parte di alcuni test unitari. (Supponendo che tu collaudi unitamente il tuo modello e il tuo Visualizza modello , ma non la tua vista .)

Quindi, penserei che la Vista sia il posto migliore per convertire la bandiera "oltre il limite" in un colore, in modo che i test delle tue unità debbano solo garantire che nelle giuste condizioni, il flag "over-the-limit" viene generato nel Visualizza modello .

D'altra parte, se vuoi dare all'utente la possibilità di scegliere il colore da visualizzare in caso di una situazione "oltre il limite", allora il colore diventa parte del tuo Modello .

Tuttavia, anche in questo caso, il colore scelto dall'utente in caso di una situazione di "oltre il limite" può essere presentato dal Visualizza modello come entità completamente separata dal "over-the-limit" segnala se stesso, e in modo completamente astratto, (ad esempio, una stringa contenente un nome di colore,) anziché come il valore RGBA effettivo richiesto dall'ambiente di runtime.

Consenti alla visualizzazione di leggere dal Visualizza modello il flag "oltre il limite" e, se è impostato, lascia che legga anche il colore astratto che deve essere visualizzato in questa situazione e lasciare che si preoccupi di convertire il colore astratto in un valore RGBA.

    
risposta data 30.09.2015 - 15:54
fonte

Leggi altre domande sui tag