Domanda

Sto scrivendo il mio SplitViewController da zero (vale a dire da sottoclassi UIViewController e non UISplitViewController).

Ha due sotto-viewControllers (uno per il pannello di sinistra e uno per il dettaglio pannello di destra), a cui ho bisogno per inviare i messaggi appropriati (viewWillAppear, viewDidAppear, viewWillDisapppear and viewDidDisappear).

Sono già inoltro quei messaggi quando il mio SplitViewController personalizzato li riceve e funziona benissimo. Tuttavia Ho difficoltà a capire quando inviare loro quando uno dei due sub-viewcontrollers è sostituito da uno nuovo, che ha anche bisogno di ricevere tali messaggi. Sto aggiungendo la vista del nuovo UIViewController correttamente, ma i messaggi non sono chiamati in modo adeguato.

Il mio approccio iniziale era quello di chiamarli nel setter dei sub-viewControllers, chiamando viewWillDisappear a UIViewController per essere rilasciato e viewWillAppear al nuovo set UIViewController, ma questo viene eseguito prima viewDidLoad e quindi presumo che non va.

Ho anche visto che ha un metodo UIView didAddSubview: che potrebbe essere utile per sapere quando chiamare viewDidAppear sul UIViewController corrispondente.

Qualsiasi aiuto sarebbe molto apprezzato!

È stato utile?

Soluzione

Se si desidera eseguire il mirroring UISplitViewController, sembra meglio avere solo UIViewControllers fittizi che stampano fuori ogni volta che ogni metodo viene chiamato.

Per quanto riguarda il problema attuale del l'ordinamento dei viewWillDisappear, viewWillAppear e viewDidLoad, basta fare:

-(void)setSomeViewController(UIViewController newVC)
{
    [oldVC viewWillDisappear];
    [newVC view]; // Causes newVC to load the view, 
                  // and will automatically call -viewDidLoad
    [newVC viewWillAppear];

    [oldVC.view removeFromSuperview];
    [self.view addSubview:newVC.view];

    //retain and release as appropriate
    // other stuff you'll need to mirror, etc. etc.
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top