Comment appeler une-vue-contrôleur de AppDelegate dans iOS
Je suis entrain de créer une application iOS dans lequel j'ai le texte suivant requeriment: l'application doit afficher l'écran de connexion lorsqu'il démarre la première fois, et aussi que l'écran doit également être indiqué lors de l'application vient de l'arrière-plan au premier plan, dans le cas où il a été envoyé à l'arrière-plan lors de l'exécution.
J'ai manipulé pour afficher l'écran dans les deux cas. Cependant, quand je le fais et l'application vient de l'arrière-plan, et je clique sur le texfield de taper mon mot de passe, l'application obtient gelé, et il échoue dans un sujet que je ne sais pas ce que cela signifie.
J'appelle l'écran quand l'app vient de l'arrière-plan de ce genre, dans le applicationWillEnterForeground, dans AppDelegate:
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
RoomRootViewController* room = [[RoomRootViewController alloc] init];
[[self window] setRootViewController:room];
[self.window makeKeyAndVisible];
Est-ce la bonne manière de le faire?
Merci beaucoup à l'avance ! Je suis complètement perdu avec ce que je suis très nouveau dans iOS, donc toute aide sera très appréciée.
Attaché à une image, vous pouvez voir l'emplacement de l'application échoue.
- Ce que je ferais dans ce cas est d'utiliser une instance de la manette de navigation dans votre délégué d'application et de présenter votre connexion contrôleur modal. Si vous n'êtes pas à l'aide d'une manette de navigation de la hiérarchie, je le recommande cependant l'autre option serait d'ajouter simplement votre login vue des contrôleurs de vue comme une sous-vue de votre uiwindow. Je pense que votre problème est peut être lié à la création d'une nouvelle instance de la applications uiwindow. Vous ne devriez jamais avoir à dealloc votre application délégués de la fenêtre de fois qu'il est créé.
Vous devez vous connecter pour publier un commentaire.
Le code que vous utilisez actuellement est de supprimer complètement la vue racine contrôleur de votre fenêtre d'application, en d'autres termes, vous êtes à la suppression de tous les points de vue et afficher les contrôleurs de votre application. Si vous n'êtes pas à l'aide de l'ARC, c'est juste une énorme fuite de mémoire. Si vous êtes, c'est toujours pas une très bonne idée.
Dans votre
applicationWillEnterForeground:
méthode, essayez d'utiliser ce code à la place:Cela permet d'afficher le
RoomRootViewController
sur le dessus de l'ensemble de votre application actuelle de vues, au lieu de les supprimer. Vous pouvez alors le faire disparaître comme ceci:et de revenir facilement au reste de votre application.
Il sera très salissant si vous utilisez cette ligne de code
Cela signifie que chaque fois que vous créez une nouvelle instance de
UIWindow
qui contiendraUIViewController
et tous les autres composant à chaque fois. Ce qui signifie que lorsque vous allez à l'arrière-plan et vient à l'avant-plan de la fenêtre ancienne instance a été vidées et il contient de nouveaux composants c'est pourquoi, lorsque vous cliquez sur l'objet UITextField il a été libéré, La raison pour laquelle vous faites erreur. Ne pas créer une nouvelle instance de la fenêtre et utiliser le code comme @PartiallyFinite n'.Espère que cette aide.