2011-11-26 3 views
5

Si implementa willMoveToSuperview en una subclase UIView, ¿se garantiza que se llamará (con nil) cuando se llame a removeFromSuperview en su vista?¿Se llama willMoveToSuperview (con nil) al eliminar una vista de una jerarquía?

Los documentos dicen que el newSuperview parámetro puede ser nil y que se llama "siempre que cambie el SuperView" pero no estoy seguro si puedo interpretar que esto significa que se llamará cuando se quita la vista desde su supervista incluso cuando no se está moviendo a una supervista diferente.

Respuesta

13

Siempre que una vista reciba removeFromSuperview, y la vista de vista de la vista no era ya nula, la vista siempre mostrará [self willMoveToSuperview:nil].

+0

¿Estás asumiendo que la vista aún se conserva? Si su antigua supervista es el único propietario, la vista desaparecerá para siempre después de 'removeFromSuperview', ¿verdad? – Philip007

+0

El método 'removeFromSuperview' envía' willMoveToSuperview: 'y' didMoveToSuperview' a 'self' antes de liberar finalmente' self'. Si la supervista tuvo la única referencia fuerte a la subvista, la subvista recibirá los mensajes antes de ser desasignada. –

Cuestiones relacionadas