Esempi di controller di visualizzazione del contenitore [chiuso]


94

Qualcuno può indicarmi qualche buon esempio di creazione di un controller di visualizzazione personalizzato come controller di visualizzazione del contenitore? L'unica documentazione che riesco a trovare è un paio di paragrafi nel riferimento alla classe UIViewController . Sento di aver bisogno di un po 'più di informazioni di queste e un'implementazione di esempio sarebbe carina. Google non ha scoperto nulla.

Sono particolarmente interessato al metodo:

transitionFromViewController:toViewController:duration:options:animations:completion:

Hai trovato altre fonti per questo oltre a quella ipercriptata menzionata?
John Estropia

1
Non ancora. Oggi farò un altro scavo più tardi, se avrò tempo. Sembra strano che ci siano così poche informazioni al riguardo, dato quanto sia importante e utile. Mi chiedo se è difettoso e sarà documentato meglio quando sarà migliorato.
Undistraction

3
Questo è estremamente confuso per me. Ad esempio, la vista può avere solo un controller incorporato. E se si desidera cambiare il controller in quella vista contenitore?
user4951

@JanakNirmal Molto obbligato.
Undistraction

posso nascondere la visualizzazione del container
Maulik shah

Risposte:


51

La cosa migliore che ho trovato finora è la sessione video 102 della sessione WWDC 2011 - Implementing UIViewController Containment .


1
Idem. Non è il mio esempio di codice demo preferito, ma implementa correttamente i contenitori VC e la gestione della memoria: è davvero importante che i controller di visualizzazione figlio vengano rilasciati quando non sono più visibili.
memmons

1
Sfortunatamente, la demo su come utilizzare ContainerViewController non ha funzionato perché non aveva la configurazione dell'email sul suo iPad :-(
Ken M. Haggerty

Quella sessione ha un esempio di codice?
user4951

hai il codice di esempio ora, ne ho bisogno perché ho provato molto ma ancora nessun soluto.
iPhone programmaticamente

37

2
+1 che menziona dove trovare quel dannato pacchetto di codice. L'ho esaminato.
user4951

6
Ancora +1, perché o perché Apple non può inserire il codice delle sessioni WWDC nelle pagine dei membri?
axello

+1, ti dispiacerebbe condividere, come ottenere questo percorso del codice sorgente?
Janak Nirmal

1
@JanakNirmal quale codice sorgente hai problemi a ottenere? Per ottenere il codice WWDC basta seguire il link dmg e accedere con il tuo ID sviluppatore Apple.
JosephH

17
- (void)viewDidLoad{
    [super viewDidLoad];

    // I put self in a Navigation VC so we can use its right navigationbar 
    // item for triggering the transition
    self.navigationItem.rightBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                                                    target:self 
                                                    action:@selector(button:)] 
                                                                  autorelease];

    // create test1 and test2 instance (subclass UIViewController and 
    // also need to define their own nibs)
    vc1 = [[test1 alloc]initWithNibName:@"test1" bundle:nil];
    vc2 = [[test2 alloc]initWithNibName:@"test2" bundle:nil];

    //add to the container vc which is self    
    [self addChildViewController:vc1];
    [self addChildViewController:vc2];

    //the entry view (will be removed from it superview later by the api)
    [self.view addSubview:vc1.view];
}

questa azione IBA innesca la transizione tra due VC:

-(IBAction)button:(id)sender {
    [self transitionFromViewController:vc1 
                      toViewController:vc2 
                              duration:0.5    
                               options:UIViewAnimationOptionTransitionCurlDown 
                            animations:nil 
                            completion:nil];
}

1
Questo è un ottimo esempio. Ma la gestione della memoria in questo caso può essere migliorata: stackoverflow.com/a/8453677/849616 per una soluzione più adatta.
Vive

1
Non che ti sbagli. Ma [self addChildViewController: vc1]; non ha senso. Il Container VC può avere DIVERSI controller di visualizzazione del contenitore.
user4951

@Vive Ho raggiunto un punto nel mio progetto in cui sono preoccupato per la gestione della memoria. Puoi dirmi cosa in particolare il link che hai postato fa meglio in termini di gestione della memoria? Sono molto nuovo e ho difficoltà a vedere le discrepanze
jacobronniegeorge


10

4
In realtà l'avevo già scoperto, ma purtroppo è scritto su Ios4, ma 5 ha apportato modifiche significative. Apple ora supporta esplicitamente la creazione di contenitori di controller di visualizzazione personalizzati, anche se non sembrano voler aiutarci a capire come usarli. Grazie comunque.
Undistraction

Puoi mostrarmi dove dicono questo. Non dubito di te, sono solo curioso, perché anch'io ho lottato con quello.
Rui Peres

4
Nessun problema. Ho esaminato il codice per le sue classi contenitore e nessuno di loro utilizza uno dei seguenti metodi: addChildViewController :, removeFromParentViewController, transitFromViewController: toViewController: duration: options: animations: complet :, willMoveToParentViewController: and didMoveToParentViewController: which are all listed in the updated Documentazione ios5 per UIViewController.
Undistraction


3

Questi sono i miei tutorial / esempi preferiti (pronti per iOS7) sull'argomento (tutti e tre hanno il codice sorgente disponibile su GitHub):

Visualizza il contenimento del controller

Transizioni del controller di visualizzazione contenitore personalizzato

Transizioni del controller di visualizzazione contenitore personalizzato interattivo

E poi, ovviamente, Apple offre un intero articolo sull'argomento che trovo inestimabile:

Creazione di controller di visualizzazione container personalizzati

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.