Sfondo: Desidero chiudere un modalView che ho presentato in precedenza e presentare immediatamente lo stesso viewController
che ho appena archiviato con nuove informazioni.iOS: rimozione e presentazione di ModalViewController senza accesso al proprio controllore ViewController
Problema: non ho avuto molto successo in questo modo, senza un puntatore esplicito al genitore ViewController
che ha presentato il primo ViewController
modale. Sto cercando di scrivere questa classe che funziona senza fare i conti con il precedente codice viewController
.
possibile vantaggio: Ci sono un paio di cose che ho avuto modo di sperimentare con:
1.) Cercando di ottenere l'accesso al genitore ViewController
, che in questo momento non so come.
2.) Una volta che l'accesso al genitore è acquisita, posso semplicemente applicare il seguente codice:
UIViewController* toPresentViewController = [[UIViewController alloc] init];
[self dismissViewControllerAnimated:YES completion:^{
[parentViewControllerAccessor presentModalViewController:toPresentViewController animated:YES];
}];
In teoria questo dovrebbe funzionare dato l'accesso al genitore viewController
. Sono aperto ad altri modi per farlo.
Assunzione: Non si dispone dell'autorizzazione per modificare alcun codice nel genitore ViewController
.
Se ho capito bene, dovrei cambiare questo codice: '[parentViewControllerAccessor presentModalViewController: toPresentViewController animato: YES];' a '[self.presentingViewController presentModalViewController: potatoPhotoVC animato: YES];'. Purtroppo, questo non sembra funzionare. Sto comprendendo qualcosa in modo errato? – Byte
Ciò è probabilmente dovuto al modo in cui i blocchi conservano gli oggetti: manterrà il sé ma non il controller della vista che presenta, quindi quando il "sé" è stato rimosso questa proprietà potrebbe essere impostata su zero. Impostare self.presentingViewController su una variabile locale esterna al blocco, quindi utilizzare tale variabile all'interno del blocco. – jhabbott
Questa è la stessa conclusione che ho trovato. Potrei dover creare una variabile statica per mantenere questo in modo tale che quando 'self' viene rimosso, il metodo funzionerà comunque. Ma sembra più un hack. – Byte