2010-09-23 2 views
1

Est-ce que quelqu'un peut me confirmer qu'une seule instance UIWindow est possible dans n'importe quelle application iPhone à tout moment?Nombre d'instances UIWindow dans une application iPhone

MISE À JOUR: Je trouve les informations suivantes dans ce link. D'après cela, il peut y avoir plusieurs fenêtres.

En outre, l'objet UIApplication maintient une liste de toutes les fenêtres (objets UIWindow) actuellement ouverts dans l'application, ainsi, par ceux qu'il peut récupérer aucun des objets UIView de l'application.

+0

Bien qu'il y ait une UIWindow dans la fenêtre principale xib, UIWindow est une sous-classe de UIView. Donc, je pense, même si vous ajoutez plus d'eux c'est comme ajouter une sous-vue .. Même les docs apple ne vous avertissent pas strictement de ne pas ajouter plus de fenêtres .. – lukya

+0

Mais dans la page référée par Larsaronen, Apple suggère que "votre application ne devrait jamais créer plus d'une fenêtre ". Donc je les trouve contradictoires. – Krishnan

+1

De mon lien: Même si iOS prend en charge les couches superposées, votre application ne doit jamais créer plus d'une fenêtre. Le système lui-même utilise des fenêtres supplémentaires pour afficher la barre d'état du système, les alertes importantes et d'autres types de messages au-dessus des fenêtres de votre application. Si vous souhaitez afficher des alertes sur votre contenu, utilisez les vues d'alerte fournies par UIKit plutôt que de créer des fenêtres supplémentaires. Pourquoi avez-vous besoin d'un autre UIWindow ?? – LarsJK

Répondre

0

Il y a trois types de fenêtres, et à mon avis, il est logique d'utiliser tous.

  1. fenêtres normales - la keyWindow que vous utilisez dans toutes les applications

  2. fenêtres STATUSBAR - utilisées pour la personnalisation par exemple "ce qui se passe lorsqu'un utilisateur clique sur la barre d'état" (par défaut, il est possible de faire défiler une vue en haut de page, mais vous pouvez ajouter d'autres comportements, par exemple si votre application n'utilise pas les scrollviews fonctionnalité)

  3. Fenêtres d'alerte - par exemple si vous allez faire des popups personnalisés. Beaucoup de développeurs font des popups personnalisés, mais ne les déclarent pas comme des fenêtres d'alerte. Parfois, cela provoque des problèmes graphiques, par ex. si une chose asynchrone se produit, et apparaît au-dessus de votre popup, ou si une animation s'anime au-dessus de celle-ci.

4

j'avais utilisé avec succès plusieurs UIWindows dans le passé. Il y a un certain nombre de raisons à cela. Par exemple vous ne seriez pas capable de libérer rootViewController d'une UIWindow, peu importe combien de fois vous le définiriez à zéro. Mais la collecte de la fenêtre fait l'affaire. Certains effets visuels et la séparation du code propre peuvent être obtenus en utilisant plusieurs fenêtres. Je suis agréablement surpris du nombre de personnes qui ne veulent pas expérimenter. Apple dit seulement "ne devrait pas". S'ils ne veulent pas que nous l'utilisions, nous ne serions pas en mesure de le savoir ou même de le savoir.

Questions connexes