Se si trascina intorno ad un UIViewController
per iniziare una transizione interattivo comparsa all'interno di un UINavigationController
, il UIViewController
sotto quella attuale ha viewWillAppear:
chiamato, seguito dal metodo UINavigationControllerDelegate
navigationController:willShowViewController:animated:
Annullamento interattivo gesto UINavigationController pop non chiamare i metodi UINavigationControllerDelegate
Se si annulla la transizione, sia viewWillAppear:
e viewDidAppear:
ottenere chiamata sul controller vista superiore come previsto.
Tuttavia, nessuno dei metodi delegati navigationController:willShowViewController:animated:
o navigationController:didShowViewController:animated:
viene chiamato.
Sembra che almeno uno o entrambi dovrebbero essere chiamati considerando i metodi del ciclo di vita di visualizzazione di UIViewController. Mi chiedo se questo sia intenzionale o un bug in UINavigationController
.
Ciò di cui ho veramente bisogno è poter vedere quando viene annullato un pop interattivo, all'interno della sottoclasse UINavigationController
o UINavigationControllerDelegate
. C'è un modo ovvio per farlo?
modificare
sto ancora cercando una soluzione a questo, ma vorrei ricordare che ho segnalato questo problema come un bug con Apple. Guardando la documentazione, non c'è motivo per cui questi metodi delegati non vengano richiamati, specialmente considerando che i metodi equivalenti di ciclo di vita della vista vengono richiamati.
oggi edit2
Il mio biglietto radar (16.823.313) è stato chiuso (21 Maggio 2015) e contrassegnato come previsto. :(
Engineering ha stabilito che questo problema si comporta come previsto in base sulle seguenti informazioni:.
Questo è in realtà il comportamento corretto La transizione navigazione che sta accadendo da B -> A, se si annulla è metà di transizione, si non sarà possibile ottenere il didShowViewController:. metodo a cancellazione di questa transizione non dovrebbe essere considerato una transizione da a -> B perché non hai mai realmente raggiunto A.
vista [Will/Did] App anche l'orecchio dovrebbe essere chiamato come previsto.
Piuttosto un fiasco questo è il caso in quanto è controintuitivo, ma la soluzione nella mia risposta qui di seguito dovrebbe funzionare bene per il prossimo futuro, almeno per il mio caso d'uso.
ce l'hai un numero di bug report che posso ingannare? –
Ciao Tim. Il mio numero di segnalazione bug è '16823313'. Hanno provato a contrassegnarlo come risolto con il primo iOS 8 beta dello scorso giugno e l'ho riaperto dopo aver confermato che era ancora rotto. Nessuna attività da allora. – Dima