Le délégué de l'application possède une propriété de sortie vers le contrôleur de vue et le contrôleur de vue est créé dans la pointe.Quelle méthode d'initialisation est appelée dans une sous-classe UIViewController, lorsqu'elle est initialisée par une plume?
Althoug la méthode -viewDidLoad du contrôleur de vue obtient chargé, il semble qu'il initialiseur désigné reçoit aucun appel:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle {
NSLog(@"iniwinib");
if (self = [super initWithNibName:nibName bundle:nibBundle]) {
// do stuff
}
return self;
}
J'ai aussi essayé avec -init, mais cela ne touchera pas non plus un appel. Pas de sortie NSLog. Y a-t-il un autre initialiseur que je dois utiliser dans ce cas?
Comme vous l'avez dit, cela peut être très déroutant pour le lecteur. Il suggère que les objets qui sont stockés dans les NIB doivent également avoir initWithNibName: envoyé à eux. Ce n'est pas vrai. Les objets stockés dans les NIB ne doivent jamais être envoyés à initWithNibName :. Seuls les objets qui * possèdent * un NIB devraient l'avoir envoyé. –
bien viewController est le seul objet avec initWithNibName intializer – Daniel
Oui, et bien que les contrôleurs de vue puissent posséder des NIB, ils peuvent également être stockés dans des NIB. Lorsque vous placez un UIViewController (ou l'une de ses sous-classes) dans une NIB, vous ne devez pas l'envoyer initWithNibName :. Vous ne devez pas envoyer un initialiseur à un objet instancié NIB. –