Sto cercando di avvolgere la mia mente attorno ai controller in Cocoa Touch. Il problema principale è che mi piacerebbe avere più di un controller "sullo schermo" in una volta: voglio avere una vista ampia (con il controller A) composta da viste più piccole controllate dai propri controllori (per esempio B). Mi piacerebbe averlo in questo modo perché la divisione rende il codice molto più pulito. Ciò che è male è che i controller aggiuntivi (di tipo B) non sono "cittadini di prima classe" sullo schermo, ad esempio non ricevono le query di autorotazione e le notifiche. (E non è possibile visualizzare facilmente i controller modali, devono inviare il messaggio presentModal…
al loro controller padre.)Più controller di visualizzazione sullo schermo contemporaneamente?
Qual è la differenza tra i controller A e B dal punto di vista Cocoa? Il sistema mantiene una sorta di puntatore al "frontmost controller", un privilegiato a cui invia notifiche e cose del genere? Perché gli altri controller non li ricevono, anche se le loro visualizzazioni sono sullo schermo? Avere più controller "sullo schermo" è considerato un hack? O è supportato e mi manca un punto? Grazie.
Ulteriori informazioni sul problema che sto cercando di risolvere: sto scrivendo un semplice browser di foto. Le foto vengono visualizzate a schermo intero, l'utente può scorrere verso sinistra o destra per cambiare foto. Il controller A si occupa della parte a scorrimento e i controller B si prendono cura di ogni foto stessa.
L'isolamento di B sembrava una buona idea, dal momento che le foto sono caricate dalla rete e ci sono molte cose che possono accadere, come la rete potrebbe essere inattiva eccetera. Nel controller B il codice è abbastanza semplice, poiché B funziona solo con una foto particolare. Se avessi spostato il codice sul controller A, le cose sarebbero diventate disordinate.
L'unica cosa che non mi piace della soluzione corrente è che devo lavorare manualmente attorno a B non essendo un controller di "prima classe". Devo passare alcune chiamate manualmente da A a B e quando B vuole visualizzare una finestra di dialogo modale, deve inviare il presentModal…
a A. Che è brutto.
Buona risposta, grazie.So che le visualizzazioni vengono visualizzate sullo schermo, non sui controller, ecco perché continuavo a scrivere "sullo schermo" tra virgolette, che significava "avere la sua vista sullo schermo". Scriverò di più sulla situazione nella domanda. – zoul