C'è un modo per sapere quando viene avviato il licenziamentoModalViewControllerAnimate e quando viene completato (come l'idioma per viewWillAppear e viewDidAppear)? A differenza di altre animazioni, questo non sembra avere un delegato che ti dice.Come sapere quando si disabilitaModalViewControllerAnimated viene avviato e anche quando viene eseguito?
risposta
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.
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)
È 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.
A partire da iOS 5, utilizzare -dismissViewControllerAnimated: completion: e utilizzare il blocco di completamento per eseguire operazioni dopo il completamento dell'animazione. –
Grazie, la firma del mio delegato era sbagliata, quindi ho pensato che non fosse stato chiamato quando il respingimento è stato eseguito. – Boon
Che aspetto ha questa firma delegata? – AlvinfromDiaspar
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