J'ai une application iOS que j'ai créée avec le modèle "Application basé sur la fenêtre" de Xcode 4.0. Cela a bien fonctionné à l'époque et il utilisait le SDK iOS 4.3. Ceci est une application qui met simplement les boutons, les étiquettes, etc. directement sur une fenêtre. Pas de contrôleurs de vue - non rien. P>
Mais maintenant que j'ai mis à niveau vers Xcode 4.2 (et son SDK iOS 5.0), et j'exécute l'application, ce message est connecté à la console lorsque l'application se lance dans le simulateur: P> Les applications
Pour être sûr, l'application continue de fonctionner, mais ce journal plutôt gênant est imprimé sur chaque lancement. P>
Pourquoi cela se produit-il? Pourquoi IOS 5.0 Préfère / Demander des contrôleurs d'affichage? P>
3 Réponses :
Je ne connais pas spécifiquement pourquoi le message est enregistré, mais l'intégration entre UiWindow et UIViewController augmente au cours des dernières autres itérations d'IOS. iOS 4 a ajouté un Je n'ai rien contre eux, et je les utiliserai si iOS veut
moi aussi. J'étais juste curieux du comportement ci-dessus. P>
blockQuote>
J'interprèterais le message enregistré comme un coup de pouce doux mais persistant de la pomme vers la fourniture d'un contrôleur de vue racine. La plupart des applications utilisent déjà les contrôleurs d'affichage de toute façon, ce n'est donc pas un grand changement, mais il existe probablement un certain nombre d'applications qui ne définissent pas correctement la propriété rootviewcontroller code> propriété à uiwindow. Les deux classes travaillent ensemble pour gérer la rotation de la vue. Compte tenu des nouvelles fonctionnalités que iOS 5 introduites à UIViewController (spécifiquement, la possibilité de créer vos propres contrôleurs de vue de conteneur), il est clair que la relation entre les deux classes continuera d'évoluer. Comme vous l'avez dit, votre application continue de fonctionner dans iOS 5, d'avoir un contrôleur de vue racine n'est pas encore une exigence difficile et rapide. Il existe peut-être des fonctionnalités prévues pour les futures versions iOS qui dépendent d'avoir un contrôleur d'affichage disponible. P>
rootviewonController de la fenêtre code> à leur vue de haut niveau Contrôleur. P>
+1 En voulant que la fenêtre ait un contrôleur d'affichage racine, le code sous-jacent peut faire de certaines hypothèses qui facilitent les choses pour les ingénieurs Uikits.
Vous venez de connecter votre "vue" avec "propriétaire de fichier" ..... Supprimez simplement cette connexion et exécutez votre application.Cliquez sur votre vue et voyez la zone de l'inspecteur des connexions et supprimez cette connexion que j'ai racontée. Savoir exactement quelle raison..mais j'ai eu cette question et j'ai effacé. Peut-être que vous avez utilisé des visites de tableView ou d'autres autres points de vue. Besoin d'un contrôleur d'affichage pour lancer.Si vous supprimez cette connexion, il exécutera ce que vous avez écrit dans un code uniquement ... P>
@Chilada Vous venez de passer en revue ma réponse pour supprimer votre erreur "Les applications devraient avoir un contrôleur de vue racine à la fin du lancement de l'application" ... ?????
Permettez-moi de vous dire la raison. P>
Dans l'ancienne édition, l'application basée sur la fenêtre permet de construire des applications multi-affichages.Mais dans Xcode 4.2, l'application basée sur la fenêtre n'existe plus. L'application vide est conçue pour établir un programme multi-affichage. P>
La différence entre l'application basée sur la fenêtre et l'application vide est que le premier a une fenêtre principale, le principalwindow.xib. p>
Lorsque le programme démarre, iPhone Construisez la fenêtre principale d'abord. Le contenu dans le MainWindow sera chargé et construit. Mais si vous souhaitez plus de fonctions, par exemple. Multi-View, vous avez toujours un nouveau contrôleur de vue racine. Le contrôleur View Root peut aider à gérer les vues de votre programme. Dans la nouvelle édition, Xcode 4.2, un contrôleur de vue de la racine est attendu. p>
Dans la nouvelle édition, il n'y a pas de Mainwindow.xib dans une application vide.L'applengate crée une fenêtre à la place. Et il veut un contrôleur de vue racine. La meilleure façon est de créer une sous-classe UIViewController avec XIB pour l'interface pour MainWindow. Mais dans l'ancienne édition, XIB n'est pas nécessaire. P>
Alors obtenez-le? Sans contrôleur de visualisation root, vous ne recevrez pas d'erreur, mais vous pouvez difficilement faire quelque chose sans un. C'est pourquoi l'avertissement sort toujours. P>
Puis-je vous demander pourquoi vous ne voulez pas utiliser un contrôleur d'affichage? Ils sont très utiles et un lieu commun sur une grande partie du code iOS que vous rencontrerez.
Je n'ai rien contre eux et je les utiliserai si iOS veut que jeôles. J'étais juste curieux du comportement ci-dessus.