Questo è un avvertimento a tutti coloro che cercando di attuare paesaggio e ritratto con due viste in un singolo XIB (iOS 4 con Xcode 4).Lo svantaggio principale di avere due viste in un singolo XIB - per me - era che si può collegare un solo oggetto UIOutlet in un XIB a un singolo oggetto UIOutlet in un controller di visualizzazione.
Quindi, ad esempio, se si dispone di un XIB con una vista per orizzontale e una vista per verticale, e entrambe le viste contengono gli stessi oggetti di interfaccia in posizioni diverse (come una UILabel in orizzontale e una UILabel in verticale). Non è possibile collegare UILabel nella vista verticale e l'oggetto UILabel nella vista orizzontale a un singolo oggetto UILabel nel controller di visualizzazione allo stesso tempo.
Trovo questa delusione, poiché la documentazione di iOS UIViewController (iOS 4.3) mi ha suggerito di implementare viste panoramiche e verticali personalizzate passando da una visualizzazione all'altra a due a livello di programmazione mentre lo schermo ruota.
Dopo aver trascorso un po 'di tempo a capire come eseguire questa operazione, ho scoperto che è possibile avere due viste diverse collegate a un singolo controller di visualizzazione, ma è necessario disporre di prese per entrambe le viste. Ad esempio, nel mio controller di visualizzazione, ho due oggetti UILabel (uno per connettersi a un UILabel nella vista verticale, uno per connettersi a un UILabel nella vista orizzontale). Nel mio codice, ogni volta che aggiorno l'uscita del paesaggio, aggiorno anche il panorama verticale.
Non molto elegante, ma funziona, e poiché questo è per una vista semplice con uno schermo, non consumerà troppa memoria per avere tutti gli oggetti UI duplicati nel controller e nelle viste. Non vorrei creare un progetto che l'abbia fatto di nuovo in quel modo, ma è stato un buon compromesso per quel progetto.
fonte
2011-09-25 18:43:50
Sono un po 'incerto sulla distinzione tra "vista" e XIB qui. Per esempio (vero), diciamo che devo implementare qualcosa con una vista mappa in alto, 3 pulsanti in basso e diversi controlli nel mezzo a seconda di una condizione. Quel mezzo potrebbe essere un.) Etichette, formattate in un modo particolare, o b.) Un'immagine e meno etichette, formattate in modo diverso. Il mio pensiero era di 3 visualizzazioni: una vista per gestire ciascuno di questi gruppi di controlli (mappa, controlli condizionali, pulsanti). È meglio fare 3 viste in un XIB o semplicemente mettere tutti i controlli in un'unica vista? – Danny
Ovviamente non dovresti mettere * ogni * vista in un singolo XIB, ma ti ha chiesto se c'è un motivo per cui non dovresti farlo affatto. Ci sono sicuramente momenti in cui è utile. –