137 votes

iPhone SDK: quelle est la différence entre loadView et viewDidLoad?

Lorsque vous travaillez avec des vues et des contrôleurs de vue dans une application iPhone, quelqu'un peut-il expliquer la différence entre loadView et viewDidLoad?

Mon contexte personnel, c'est que j'ai construit tout mon point de vue à partir du code, je ne sais pas et de ne pas utiliser Interface Builder, qui devrait faire aucune différence.

J'ai remarqué que, souvent, quand j'ai ajouter le code d'initialisation de loadView, je me retrouve avec une infinie trace de la pile, donc en général, je fais tout mon enfant-point de vue construction dans le viewDidLoad...mais c'est vraiment pas clair pour moi quand chacun est exécuté, et ce qui est le plus approprié de placer le code d'initialisation. Ce qui serait parfait, est un schéma simple de l'initialisation des appels.

Merci!

200voto

Marco Points 9118

Je peux deviner ce que pourrait être le problème ici, parce que je l'ai fait:

J'ai remarqué que, souvent, quand j'ai ajouter le code d'initialisation de loadView, je me retrouve avec une infinie trace de la pile

Ne lisez pas de soi.vue en loadView. Seulement ensemble , de ne pas obtenir .

Le soi.vue de la propriété de l'accesseur appels -loadView si la vue n'est pas actuellement chargé. Il y a votre récursion infinie.

La façon habituelle de construire la vue par programmation en loadView, comme le montre d'Apple pré-Interface Builder exemples, est plus comme ceci:

UIView *view = [[UIView alloc] init...];
...
[view addSubview:whatever];
[view addSubview:whatever2];
...
self.view = view;
[view release];

Et je ne vous blâme pas de ne pas utiliser de l'IB. J'ai coincé avec cette méthode pour l'ensemble de Instapaper et je me trouve beaucoup plus à l'aise avec elle que de traiter avec le bureau international de la complexité, de l'interface de bizarreries, et inattendu derrière-le-scènes de comportement.

46voto

NilObject Points 7874

loadView est le mode de UIViewController qui va charger la vue et l'attribuer à la "vue" de la propriété. C'est aussi l'emplacement d'une sous-classe de UIViewController l'emporterait si vous voulais en programmant mis en place le "view".

viewDidLoad est la méthode qui est appelée une fois que la vue a été chargé. Ceci est appelé après loadView est appelé. C'est un endroit où vous pouvez remplacer et insérer le code n'est plus de la configuration initiale de l'affichage une fois qu'il a été chargé.

14voto

ashokdy Points 413
<pre><code></code><p>doit être utilisé lorsque vous chargez votre point de vue d’une plume et souhaitez effectuer toute personnalisation après lancement</p><pre><code></code></pre><p>doit être utilisé lorsque vous voulez créer votre vue par programmation (sans l’utilisation d’Interface Builder) si c’est utile s’il vous plaît voter me up</p></pre>

11voto

alamodey Points 4286

Juste ajouter quelques exemples de code pour illustrer ce que NilObject dit :

4voto

brian.clear Points 2424

Découvrez le Cycle de charge - loadView dans BasicViewControllers

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X