Comment trouver supérieure-vue-contrôleur sur iOS

J'ai couru dans quelques cas où il serait agréable d'être en mesure de trouver la "plus haute" - vue-contrôleur (le responsable de l'affichage actuel), mais je n'ai pas trouvé un moyen de le faire.

Fondamentalement, le défi est ceci: étant Donné que l'on est en cours d'exécution dans une classe qui n'est pas une vue contrôleur (ou d'une vue) [et ne pas avoir l'adresse d'une active view] et n'a pas été transmis à l'adresse de la supérieure-vue-contrôleur (ou, disons, l'adresse de la manette de navigation), est-il possible de trouver ce point de vue contrôleur? (Et, si oui, comment?)

Ou, à défaut, est-il possible de trouver le premier point de vue?

  • Donc, vous dites qu'il n'est pas possible.
  • non, je dis qu'il semble que votre code pourrait utiliser un peu de re-conception, car il est rarement besoin de le savoir. Aussi, l'idée de "supérieur" n'est valable que dans certains contextes, et encore pas toujours.
  • J'avais mal lu votre question. Il y a beaucoup de si et de mais en essayant de répondre à ça. Cela dépend de votre point de vue contrôleur de débit. @Wilbur la réponse devrait être un bon point de départ pour tracer vers le bas.
  • Eh bien, nous allons simplifier à un cas spécifique. Si je voulais écrire un clone de UIAlertView, comment pourrais-je le faire? Notez qu'il peut fonctionner très bien sans être passé tout addressibility à d'autres contrôleurs et des vues.
  • L'ajout d'un deuxième UIWindow fonctionne bien pour l'affichage des alertes-comme des calques.
  • Ouais, UIWindow semble être la façon de faire une alerte. Ne pas résoudre les problème de déterminer le niveau supérieur-vue-contrôleur (où l'on veut placer un autre sur le dessus), mais je suppose que ceux qui ont besoin d'être traités séparément.
  • Que faire si vous avez vraiment besoin dans certains cas particulier, en plus d'un UIAlertView dans un module où vous ne traiter les données? Vous ne voulez pas perdre son temps avec un contrôleur de référence dans le module de données, en prenant soin de la régler correctement dans toute l'INTERFACE utilisateur lorsque vous appelez le module de données. Ou vous faire? Et peut-être mieux est de placer un entre-deux de la couche... je pense simplement ici... vous avez peut-être droit.

InformationsquelleAutor Hot Licks | 2011-05-25