Sono confuso dal fatto che e quando è necessario utilizzare la vista contenitore? e come possiamo creare un'istanza di una vista contenitore per codice?Che cos'è la vista contenitore nell'SDK iOS 5?
risposta
La vista contenitore è una vista che è possibile trascinare in uno dei controller della vista già presenti nello storyboard (chiameremo questo viewControllerA). È possibile ottenere automaticamente un controller di visualizzazione collegato a questa vista tramite un comando di incorporamento. Questo nuovo controller di visualizzazione ha il suo set di frame, in modo che abbia le stesse dimensioni della vista del contenitore: se ridimensionate la vista del contenitore, anche il controller verrà ridimensionato automaticamente. Quindi, se lo desideri, puoi trascinare in più viste contenitore in viewControllerA e ognuna avrà il proprio controller di visualizzazione. Nel codice, se è necessario accedere a questi controller di visualizzazione incorporati, è possibile accedervi da viewControllerA.childViewControllers, che fornirà una serie di controller di visualizzazione incorporati di cui si dispone.
C'è una discussione di queste viste contenitore nel video di sessione Sessione WWDC 2012 denominato "Adozione degli storyboard nella tua app".
Sono confuso che perché e quando è necessario utilizzare la visualizzazione contenitore?
Quando le persone parlano di visualizzazioni di container, in genere indicano solo un semplice vecchio UIView che contiene altre visualizzazioni. L'utilizzo di una vista in questo modo consente di spostare tutte le viste che contiene come gruppo, in modo da mantenere le rispettive posizioni l'una rispetto all'altra. Inoltre, rende facile nascondere tutte le viste contenute come gruppo.
e come è possibile creare un'istanza di una vista contenitore per codice?
stesso modo che ci un'istanza di un UIView dal codice normalmente:
CGRect frame = CGRectMake(someX, someY, someWidth, someHeight);
UIView *container = [[UIView alloc] initWithFrame:frame];
Dopo di che, probabilmente vorrete aggiungere alcune subviews al contenitore, e, infine, aggiungere il contenitore come una visualizzazione secondaria di la vista del tuo controller di visualizzazione.
Inoltre, si noti che stiamo parlando di vista e non vista controllori qui. Le persone parlano anche di controller di visualizzazione contenitori, con cui intendono i controller di visualizzazione in grado di gestire altri controller di visualizzazione. UITabBarController, UINavigationController e UISplitViewController sono esempi dei controller di visualizzazione contenitori forniti da iOS. Puoi creare il tuo se vuoi, ma questo è un argomento per un'altra domanda.
Aggiornamento: Dal tuo commento, apparentemente ti stai chiedendo la voce "Vista contenitore" nell'editor di storyboard. Se ne trascini uno in una vista, vedrai che:
La vista stessa è un UIView utilizzato come segnaposto.
Insieme alla vista, l'editor crea un'area in cui è possibile modificare il contenuto che deve essere gestito da un controller di visualizzazione figlio. Guarda l'immagine qui sotto.
questo non è solo un oggetto - è diversi. Si ottiene una vista, un controller di visualizzazione figlio e un 'embed' segue. Puoi certamente creare quelli in codice te stesso e collegarli in modo appropriato se vuoi.
Non penso che questo sia ciò che l'op sta chiedendo. C'è un nuovo tipo di visualizzazione disponibile in IB (solo in uno storyboard credo) che possa contenere un controller di visualizzazione. Quel controller di visualizzazione è collegato tramite un embed segue. Questo è diverso da una vista normale e da un controller vista contenitore. Che cosa esattamente dietro le quinte è questa cosa, non so - non trovo documentazione su di essa. Suppongo che possa essere creato in codice, ma non ho idea di come. – rdelmar
@rdelmar, sì, sto chiedendo la "vista del contenitore" disponibile in IB. Sono confuso tra la "vista del contenitore" e una "vista" comune. Secondo la mia comprensione, la vista può anche contenere sotto-viste e quelle sotto-viste possono essere gestite anche dai loro stessi controllori. Forse la mia comprensione è sbagliata, per favore aiutami gentilmente a chiarire. –
@WilliamChoi, vedere la mia risposta. – rdelmar
- 1. Segue di incorporamento - iOS 5
- 2. Delegare utilizzando la vista Contenitore in Swift
- 3. iOS 5 segue implementazione
- 4. iOS 5 Storyboard e pennini
- 5. Apre la visualizzazione corrente utilizzando Segues/Storyboard su iOS 5
- 6. Personalizzazione TabBar IOS 5
- 7. ios 5 UISearchDisplayController crash
- 8. Laravel 5 vista non trovata
- 9. Singleton in iOS 5?
- 10. AVFoundation iOS 5
- 11. iOS 8 Cambio contenitore iCloud
- 12. Carica UIViewController in una vista Contenitore usando StoryBoard
- 13. popViewController/viewWillAppear non animato in iOS 5
- 14. PresentModalViewController in Storyboard programmaticamente iOS 5
- 15. iOS 5: Twitter View Composer appare lentamente
- 16. Aggiunta di una vista contenitore a UICollectionViewCell
- 17. chiamando la funzione JavaScript MVC 5 vista Razor
- 18. Vista collezione iOS 6
- 19. accesso proprietà secondarie vista contenitore veloci
- 20. Geofence API per iOS 5
- 21. iOS 5 "API Centro notifiche"?
- 22. Errore iOS: errore FBSOpenApplicationErrorDomain 5. Che cosa significa?
- 23. iOS 5 - GIF animate che mostrano colori errati a volte
- 24. iOS 5 Appeso a ASIHTTPRequest
- 25. Vista rimozione iOS
- 26. iOS: l'aggiunta di UITapGestureRecognizer alla vista contenitore intercetta il metodo didSelectItemAtIndexPath di UICollectionView
- 27. Problema di routing MVC 5 - Percorsi multipli che indirizzano erroneamente la stessa vista
- 28. eventi jQuery su iOS 5
- 29. iOS 5 storyboard, di programmazione determinare percorso
- 30. UICollectionView + iOS 7/Xcode 5 = Assertion Failure
È la stessa cosa di "contenere il controller" nella scrittura programmata? – huggie
@huggie, L'utilizzo di una vista container in IB ti offre la stessa cosa che ottieni usando l'API del controller contenitore personalizzato nel codice. – rdelmar