2009-04-07 8 views
0

La propriété étiquette est de type UILabel et est une sortie dans UIViewController.Réglage UILabel avant d'ajouter à UIWindow échoue sous-vue

Pourquoi les travaux suivants: -

[window addSubview:viewController.view]; 
[viewController.label setText:@"New Label"] ; 

et la séquence inverse des déclarations ne change pas le texte par défaut dans l'étiquette:

[viewController.label setText:@"New Label"] ; 
[window addSubview:viewController.view]; 

est une vue pas chargée de l'interface utilisateur éléments attachés au UIViewController?

Répondre

3

Un contrôleur de vue crée ou charge sa vue lorsqu'il est demandé pour la première fois, soit à partir d'un NIB, soit via la méthode loadView. Et dans la plupart des cas, les sous-vues associées sont également créées uniquement lorsque la vue principale est chargée. Cela signifie que viewController.label correspond à nil jusqu'à ce que vous ayez essayé d'accéder à viewController.view.

Ainsi, si vous essayez de définir le texte d'étiquette en premier, vous envoyez simplement ce message à nil, ce qui explique pourquoi il ne semble pas avoir pris effet.