2010-06-16 7 views
0

Je suis nouveau sur iPhone dev et j'ai besoin d'aide pour ajouter des sous-vues.L'objet addSubview ne fonctionne que dans viewDidLoad

J'ai un objet réutilisable que j'ai enregistré dans un fichier .h .m et xib distinct. Je voudrais utiliser cet objet dans le contrôleur de vue de mon projet principal. J'ai inclus l'en-tête et l'affectation de l'objet ne génère aucune erreur. Je suis capable de charger l'objet dans mon projet principal, mais je peux seulement faire des choses dans ma méthode viewDidLoad. J'ai l'intention d'avoir quelques-uns de ces objets sur mon écran et je cherche une solution qui soit plus robuste que juste le câblage de plusieurs copies de l'objet de forme.

Dès que j'essaie d'accéder à l'objet en dehors de viewDidLoad, une erreur inconnue est générée - première utilisation dans cette fonction.

Voici ma méthode de viewDidLoad:

shapeViewController * ShapeView = [[shapeViewController alloc] initWithNibName: @ paquet "shapeViewController": nil];

[self.view addSubview: shapeView.view];

// Ceci est la ligne de problème // Ce code fonctionne, l'affichage change sur l'objet de forme

[ShapeView updateDisplay: @ "123456"];

---- mais le même code en dehors de viewDidLoad génère l'erreur. Pour résumer, tout fonctionne sauf lorsque j'essaie d'accéder à l'objet shapeView dans le reste des méthodes.

Merci à l'avance

Répondre

2

Vous devez déclarer l'instance ShapeView dans votre interface, pas seulement à l'intérieur d'une fonction. Alors le code dans la fonction devient juste une initialisation.

Ainsi, dans votre fichier .h, à l'intérieur du @interface vous écrivez la déclaration :

shapeViewController *shapeView; 

Et dans votre viewDidLoad, vous REINITIALISERA ce que vous avez déclaré avant:

shapeView = [[shapeViewController alloc] initWithNibName:@"shapeViewController" bundle:nil]; 
[self.view addSubview:shapeView.view]; 

Vous pouvez maintenant utiliser shapeView dans toute votre classe.

+0

Salut Ivans, Merci pour l'entrée. Quand je déclare l'instance de shapeView dans mon interface, j'obtiens l'erreur "La déclaration locale de 'shapeView' cache la variable d'instance – DecodingSand

+0

Edité pour plus de clarté – ivans

+0

Merci Ivan, ça a marché! – DecodingSand

Questions connexes