J'essaye d'obtenir une variable d'une classe que j'ai faite d'une vue de table. Fondamentalement, ce que je veux que ce soit de dire à l'autre contrôleur quelle ligne a été sélectionnée, c'est ce que j'ai essayé de faire.Objective C accéder aux variables d'autres classes?
Table Voir le fichier de classe:
@property(nonatomic) NSInteger itemId;
-(NSInteger)itemId;
Je voudrais ensuite faire des méthodes définir et obtenir la variable dans le fichier .m du Tableau de classe (j'ai synthétisé et fait tout ce genre de choses, Je vous montre les méthodes)
-(NSInteger)itemId {
return self.itemId;
}
Et maintenant la cellule de table méthode choisie ...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)
indexPath {
NSUInteger row = [indexPath row];
self.itemId = row;
//segue stuff (if you want me to include this just let me know)
}
est tout pour cette classe et maintenant la classe que j'ai besoin de la valeur pour View classe Controller .h qui est poussé par Segue
@property (nonatomic) NSInteger itemId;
View Controller Class
#import "TableViewController.h"
//Skip a few things
@synthesize itemId;
//skip a few things
-(void)viewDidLoad {
TableViewController *tvc = [[TableViewController alloc] init];
itemId = [tvc itemId];
NSLog(@"%i", itemId);
Pour certains raison pour laquelle cela ne fonctionne pas ... Quand j'imprime le "itemId" dans la méthode "didselectrow" il renvoie le bon nombre mais quand j'essaie de l'imprimer dans l'autre classe il me donne juste '0' ? S'il y a des choses que j'ai omises que vous voulez voir dans mon code, je serais plus qu'heureux de les écrire :) Je voulais juste gagner du temps et de l'espace en réduisant un peu le code. Merci d'avance!
EDIT: J'ai trouvé une solution possible mais cela implique l'utilisation du délégué. Je suis sûr qu'il doit y avoir une meilleure façon de le faire, donc si vous avez des idées, faites le moi savoir.
N'appelez-vous jamais le getter 'itemId' de votre classe de vue de table? Assez sûr que cela provoque une boucle infinie; vous devriez le changer en 'return itemId'. – yuji