2010-10-03 3 views
1

Je voudrais ajouter un uiview 50x150 que je vais utiliser comme menu, et je veux le superposer sur mon uiviewcontroller. Jusqu'à présent, ce que j'ai fait est de déclarer un IBOutlet UIView dans le fichier de classe UIViewController, et dans ce fichier xib UIViewController, j'ai tiré un UIView de la bibliothèque et l'ai connecté en conséquence. Le problème est son affiche pas en essayant de l'appeler:Ajout d'une uiview à un contrôleur d'image

menu = [[UIView alloc] initWithFrame:CGRectMake(10,10,50,150)]; 
//[self.view insertSubview:menu atIndex:0]; 
[self.view addSubview:menu]; 
//[self.view bringSubviewToFront:menu]; 

J'ai essayé différentes variantes que vous pouvez le voir, toutes les suggestions d'autres messages mais je reçois rien. Est-ce que je vais dans le mauvais chemin ici? Qu'est-ce que je rate?

Répondre

2

Étant donné que vous avez connecté l'affichage dans Interface Builder, vous n'avez pas besoin d'en affecter un nouveau. Pour ajouter à la vue principale du contrôleur de vue, le code devrait ressembler à ceci:

[self.view addSubview:self.menu]; // Assuming your IBOutlet is a property called menu. 

Si vous utilisez juste un IBOutlet Ivar (not recommended), il devrait ressembler à ceci:

[self.view addSubview:menu]; 
+0

wow Je n'arrive pas à croire que j'étais si proche. Ok, c'est logique maintenant mais je suis curieux de savoir pourquoi vous dites que IBOutlet n'est pas recommandé? –

+0

Lisez la documentation sur le lien "non recommandé" (http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmNibObjects.html#//apple_ref/doc/uid/TP40004998- SW2). Il décrit les recommandations d'Apple concernant les IBOutlets et la gestion de la mémoire. Il dit que vous devriez ajouter 'IBOutlet' à la déclaration de propriété, pas à l'ivar. –

Questions connexes