Je développe une application iPhone en Objective-C. Je veux accéder à un membre de données qui est de type NSMutableArray de la classe RootViewController dans une autre classe. J'ai essayé de rendre le tableau statique. Mais je voudrais avoir un tableau non statique. Comment puis-je y parvenir?Accéder à un membre de RootViewController dans une autre classe
Répondre
Vous avez besoin de deux choses:
- une référence au
RootViewController
- un moyen d'obtenir votre variable de
RootViewController
.
Dans une situation où vous avez (probablement) un RootViewController
par application, il est logique de conserver une référence à cet objet dans le délégué de votre application. Vous pouvez obtenir le délégué de l'application comme ceci:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
Dans votre classe de délégué de l'application, vous devez ajouter une propriété appelée rootViewController
qui expose votre objet RootViewController
. Maintenant, vous pouvez écrire des choses comme
RootViewController *theRootViewController = appDelegate.rootViewController;
Ceci satisfait à la première exigence. Maintenant, afin d'accéder à l'objet appartenant au contrôleur de vue, vous devez ajouter une propriété à RootViewController
. Vous n'avez pas vraiment dit ce que l'objet est ou fait, alors appelons-le simplement myMutableArray
. Créer une readonly
propriété avec ce nom sur RootViewController
, et maintenant, vous serez en mesure d'écrire des choses comme ceci:
NSMutableArray *myArray = theRootViewController.myMutableArray;
Cela vous permettra de faire ce que vous voulez faire.
Je dois vous avertir, cependant: exposer un NSMutableArray
n'est généralement pas une bonne idée. La raison en est que si vous changez le contenu de ce tableau, RootViewController
n'aura aucune idée que vous avez fait cela. Donc, si vous créiez, disons, une vue maître-détail, votre RootViewController
ne saurait pas que vous avez ajouté un nouvel objet.
Il serait préférable que vous écriviez des méthodes qui permettent à RootViewController
de modifier la matrice en interne. Par exemple, vous pouvez avoir une méthode nommée addFooObject:
qui gère le tableau. Ensuite, le contrôleur de vue saura ce que vous avez fait. Pour l'accès, vous pouvez très facilement retourner une copie immuable, autoreleased du tableau mutable de votre propriété.
Vous pouvez également accéder au contrôleur de vue racine uising la sharedApplication dans une ligne de code:
[[[UIApplication sharedApplication] keyWindow] rootViewController]
- 1. C++ classe Vector comme membre dans un autre classe
- 2. Accéder à un Jbutton "anonyme" dans une classe anonyme d'une autre classe anonyme?
- 3. Comment accéder à une minuterie d'une autre classe en C#
- 4. Accéder à une variable membre d'UIView à partir d'un autre UIView
- 5. Comment puis-je accéder à un membre statique public d'une classe Java à partir de ColdFusion?
- 6. Accéder à la fonction membre d'un autre fichier .cpp dans le même fichier source?
- 7. Accéder à des membres de formulaire d'une autre classe
- 8. problème en ajoutant un RootViewController à UINavigationController
- 9. Comment appeler une variable de membre de classe instanciée à l'aide d'une autre fonction sans rapport avec la classe?
- 10. Comment accéder à la variable de membre privé d'une classe de données à partir d'une autre classe dérivée dont la classe parente est une classe d'amis de la classe de données?
- 11. C++: comment une fonction membre statique publique peut-elle accéder à des variables de membre d'instance privée?
- 12. accéder à la variable membre de l'objet thread boost
- 13. Référence indéfinie à un membre de classe statique
- 14. Accéder à une classe qui a été instanciée par une méthode dans une classe distincte
- 15. Une classe de base peut-elle déterminer si une classe dérivée a remplacé un membre virtuel?
- 16. Accéder à une session d'une autre application Web
- 17. Accéder à un autre maibox dans Outlook en utilisant vba
- 18. Comment accéder à un autre formulaire de bean dans une action Struts?
- 19. Accès à un objet créé dans une autre classe dans le cacao
- 20. Comment s'inscrire à un autre événement de classe dans C#?
- 21. Comment puis-je accéder à une variable de classe via un tableau dans VB.NET?
- 22. Accéder à un élément XAML à partir d'un autre XAML
- 23. « erreur C2248: 'CObject :: CObject': ne peut pas accéder à un membre privé déclaré dans la classe 'CObject'
- 24. Comment accéder à un VCL-Control à partir d'un autre script PHP?
- 25. Accéder à une énumération dans un espace de nom différent
- 26. Appelez une classe dans une autre classe en PHP
- 27. Copier une classe d'un élément à un autre
- 28. Utilisation d'un ActionListener dans une classe pour démarrer un timer dans une autre classe
- 29. Comment accéder au membre d'une classe (créé en C#) dans dephi
- 30. comment accéder à la grille de données dans un mxml dans un autre composant?
Ne pas oublier d'importer votre classe appdelegate (#import "AppDelegate.h") :) – Tieme
Oh et J'avais besoin de typer le délégué de l'application: AppDelegate * appDelegate = (AppDelegate *) [[UIApplication sharedApplication] délégué]; – Tieme