Lorsque j'attribuait par programme un UILabel dans ma méthode initWithNibName personnalisée, et plus tard dans viewDidLoad, essayait de lui assigner une chaîne, l'étiquette ne pointait sur rien. Je ne l'ai pas libéré; l'étiquette apparaît sur l'écran. Si je crée l'étiquette dans IB et lui assigne du texte dans viewDidLoad, cela fonctionne.Objets IB vs objets alloués manuellement dans init/viewDidLoad
Est-ce contraire à une règle de configurer des objets alloués manuellement dans viewDidLoad? Pourquoi ne pointe-t-il pas à quelque chose, même si viewDidLoad est appelé après mon init?
De la doc de viewDidLoad:
Cette méthode est appelée après que le contrôleur de vue a chargé ses vues associées en mémoire. Cette méthode est appelée, que les vues aient été stockées dans un fichier nib ou créées par programmation dans la méthode loadView. Cette méthode est généralement utilisée pour effectuer des étapes d'initialisation supplémentaires sur les vues chargées à partir de fichiers nib.
Dans mon INIT:
_descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 218, 280, 10)];
_descriptionLabel.numberOfLines = 0;
_descriptionLabel.lineBreakMode = UILineBreakModeWordWrap;
_descriptionLabel.font = [UIFont systemFontOfSize:12.0];
_descriptionLabel.adjustsFontSizeToFitWidth = NO;
_descriptionLabel.text = @"Description not found.";
_descriptionLabel.backgroundColor = [UIColor clearColor];
En viewDidLoad, la valeur de la variable est 0x0. C'est la même chose avec mon UIButton assigné manuellement, qui fonctionne entièrement une fois la vue chargée.
Pourriez-vous montrer un exemple de code qui ne fonctionne pas? Je ne sais pas ce que vous voulez dire par "l'étiquette ne pointait à rien" – stefanB
Edited original post for clarification. – hyn
Avez-vous créé UILabel dans IB, par exemple? est-il défini comme IBOutlet UILable et est-il connecté à une fenêtre UILabel on dans IB, ou essayez-vous de le créer de manière pragmatique, par ex. UILable * descLabel = [[...]]? – stefanB