Ce que des fonctionnalités similaires à la méthode (viewWillAppear) existe sur UIView?
viewWillAppear est appelée sur UIViewController lorsqu'une vue est sur le point d'être affiché sur l'écran. Est-il possible d'obtenir similaire rappel sur UIView?
Vous devez vous connecter pour publier un commentaire.
Comment au sujet de la suite de la UIView référence
cela permettra au moins de vous dire quand elle est ajoutée à la vue de la hiérarchie, mais il n'ya aucune garantie que le point de vue de la hiérarchie est présentée/visible.
willMove(toWindow:)
/didMoveToWindow()
sont un peu plus près analogues, parce que dans ces, vous pouvez tester si la fenêtre estnil
pour voir si la vue est partie d'une hiérarchie, qui est relié à un écran. C'est probablement ce que vous voulez si vous êtes réglage des minuteries de contrôle de l'animation ou quelque chose comme ça.Non, mais vous pouvez avant que la notification à la vue souhaitée à partir de votre point de vue contrôleur.
Macro Solution
J'ai fait une macro solution pour cela que c'est très élégant et facile à utiliser.
.m
Ajouter les éléments suivants à votre .m
Yup! C'est vraiment facile!
(En raison de la façon dont le ifdef basculement de la macro est définie ci-dessous, vous pouvez utiliser l'un ou l'autre ou les deux!)
.h
Ajouter les éléments suivants à votre .h sous
@end
(ou, si vous voulez garder les choses propres, vous pouvez simplement ajouter un fichier appelé les macros.h et n ° de l'importer)Remarque: Si vous ajoutez à cela (ou l'importation) pour les fichiers multiples aussi importer les uns des autres ou @classe les uns les autres, vous pouvez finir par avoir à remodeler le #ifdef logique et cette macro peut échouer, je suggère de les importer à partir d'un autre .h fichier pour chaque classe, vous en avez besoin dans, cette macro a été créé plus comme une preuve de concept que quelque chose à être utilisé dans la production de code
Macros are bad
sons subjectifs. J'ai fait ça pour le plaisir; c'est une belle façon d'avoir un viewWillDisppear équivalent, ce qui est clair ce qui s'est passé, par opposition àwillMoveToWindow{if(!window){if(!superview){/*stuff*/}}}
qui n'est pas aussi clair