2009-06-13 13 views

risposta

10

Sì, e più facile di quanto si pensi.

Quando si chiama respintoModalViewControllerAnimated: la vista sottostante (quella che sta per apparire) riceverà un messaggio viewWillAppear e un messaggio viewDidAppear.

Avvertenza: assicurarsi che i controller della vista siano collegati correttamente o che questi messaggi vengano persi.

+0

Grazie, la firma del mio delegato era sbagliata, quindi ho pensato che non fosse stato chiamato quando il respingimento è stato eseguito. – Boon

+0

Che aspetto ha questa firma delegata? – AlvinfromDiaspar

+4

Ho entrambi viewDidAppear e viewDidAppear implementati. ma quando viene chiamato il modalviewcontroll (come stile a curvatura parziale), questi delegati non sono chiamati. qualche idea? – AlvinfromDiaspar

5

Ho paura che viewWillAppear e viewDidAppear non funzionano sempre. per l'iPhone che fanno, su iPad no. se l'UIViewController presentato non è presentato a schermo intero (se è presentato come foglio di modulo per esempio) la vista genitore non riceverà le funzioni del ciclo di vita viewWillAppear o viewDidAppear. sfortunatamente l'unico modo che ho trovato è di farmi chiamare il mio messaggio delegato quando viene chiamato ilmodalViewControllerAnimated (ether per riferimento o con notifica)

1

È possibile utilizzare i metodi di visualizzazione dell'aspetto. E se hai bisogno che qualcosa accada al termine dell'animazione, puoi usare [object performSelector:@selector(selector) withObject:anotherObject afterDelay:0]. Non so esattamente perché, ma l'azione verrà pianificata nel ciclo di esecuzione corrente, ma al termine dell'animazione.

+1

A partire da iOS 5, utilizzare -dismissViewControllerAnimated: completion: e utilizzare il blocco di completamento per eseguire operazioni dopo il completamento dell'animazione. –

Problemi correlati