iphone - tanto - iOS 5:-viewWillAppear no se llama después de descartar el modal en iPad
porque se actualiza tanto facebook (3)
Yo tuve el mismo problema. Descubrí que viewWillAppear
no se llama después de descartar modal, pero viewDidAppear
. Así que intente viewDidAppear
en viewDidAppear
lugar.
Estoy presentando modal usando el siguiente código:
AddName *add = [[AddName alloc] initWithNibName:@"AddName" bundle:nil]
add.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalView:add animated:YES];
Y después de mi trabajo, uso el siguiente código para volver a mi vista principal.
[self dismissModalViewControllerAnimated:YES];
Por eso se usa para llamar a -viewWillAppear
por defecto.
Mi problema es que
Estaba funcionando bien con iOS4.3 .
Pero no funciona con iOS5 .
Qué tengo que hacer ? O es que hay algún error en iOS5 ?
iOS 5 definitivamente cambió sus llamadas a viewWillAppear
y viewWillDisappear
. Por ejemplo, las subvistas ( View Controller''s views
como subvistas para ser exactas) en un UIScrollView
, se viewWillDisappear
View Controller''s views
cuando aparezca otro controlador de vista en la pila. Sin embargo, cuando se viewWillAppear
el controlador de vista, no se llama a viewWillAppear
. Estos métodos nunca fueron llamados en iOS 4 en subvistas de UIScrollView
.
Este es un comportamiento extraño para mí. Combine eso con el hecho de que, independientemente de lo que debería suceder, si pudiera confiar en que suceda en iOS 4, no debería funcionar de manera diferente en iOS 5. La mayoría de las veces, no tengo idea de en qué instancia particular se llama a cada uno. Por lo general, lo pruebo y error, ya que estoy en la codificación de zona. Si funciona como me gusta, sigo adelante. Entonces iOS 5 entra y lanza una bola de demolición a todo.
También he experimentado cuando una vista UINavigationController''s
es una subvista, y un ViewController
se empuja en la pila del controlador de navegación, viewWillAppear
nunca se llama en iOS 4, pero sí se llama en iOS 5. Vaya.
-viewWillAppear
solo se garantiza que se llame en lugares donde también se haya llamado -viewWillDisappear
. Para la mayoría de las ventanas modales en el iPad, este no es el caso, ya que no ocultan toda la página.
La solución a su problema dependerá de para qué necesite la -viewWillAppear
, pero en general, es probable que necesite hacer una llamada directamente desde el mismo lugar donde descarta el controlador de vista modal.
Un mecanismo común para esto, especialmente en los casos en los que podría usar esa misma vista modal en otro lugar, es darle al controlador de la vista modal un delegado al que se llama cuando la vista está a punto de desaparecer. Esto le dará la oportunidad de tomar las respuestas de la ventana modal, o incluso forzar una recarga de datos en la vista de delegado.
Espero que esto ayude.