2012-11-13 10 views

risposta

38

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".

+0

È la stessa cosa di "contenere il controller" nella scrittura programmata? – huggie

+2

@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

30

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:

  1. La vista stessa è un UIView utilizzato come segnaposto.

  2. 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.

container view in IB

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.

+0

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

+0

@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. –

+0

@WilliamChoi, vedere la mia risposta. – rdelmar

Problemi correlati