2009-04-01 4 views
0

J'ai découvert ceci:est applicationDidFinishLaunching au mauvais endroit pour définir une image pour un UIImageView?

applicationDidFinishLaunching (une méthode déléguée du protocole UIApplicationDelegate) semble s'appeler AVANT que mes vues du fichier nib soient complètement chargées. J'ai donc essayé toute la journée de changer une image d'un UIImageView juste après le lancement de mon application sur le simulateur d'iPhone, mais rien ne s'est passé.

Puis j'ai écrit une petite méthode d'action que j'appelle en appuyant sur un bouton. Et puis c'est arrivé: WORKS! Par conséquent, la méthode de délégué applicationDidFinishLaunching n'est pas vraiment le bon endroit pour les tâches qui doivent être faites après que l'application soit vraiment "prête". Je pense qu'il y a quelque chose de mieux qui attend que la plume soit complètement chargée. mais où? et quoi?

Répondre

6

Je gues il y a quelque chose de mieux qui attend la plume à charger complètement. mais où? et quoi?

Pour les choses spécifiques à l'application comme les paramètres globaux, les préférences, etc., -appDidFinishLaunching est le bon endroit.

Pour les éléments spécifiques à UIView, vous utilisez généralement la méthode -viewDidLoad dans une sous-classe UIVIewController. C'est à peu près le seul endroit où vous êtes assuré que le fichier nib est chargé, les IBOutlets sont initialisés et les IBActions sont attachés.

Ceci est la différence avec le monde de Mac OS X, où -awakeFromNib était l'endroit pour le faire.

1

Hey jusqu'à ce que vos vues et leurs contrôleurs de vue instanciés vous ne pouvez pas modifier leur interface utilisateur. Cependant, juste pour votre problème, vous pouvez toujours déclarer uiimageview en tant que propriété de votre classe de délégué d'application et l'initialiser dans l'événement appDidFinishLaunching. Mais c'est la pire pratique. Comme sur l'iPhone qui a une mémoire limitée, paresseux, c'est-à-dire: initialiser uniquement les objets quand et juste avant qu'ils ne soient réellement requis par votre interface utilisateur. Donc idéalement, vous devriez le faire dans l'événement viewDidLoad de la vue où vous voulez utiliser cette UIImageView.

applicationDidFinishLaunching est généralement utilisé pour des choses comme les contrôles de fichiers de base de données, l'ouverture d'une connexion de base de données, peuplant les variables globales, toute autre application large logique, la vérification d'une connexion Internet disponible etc

Questions connexes