2011-09-09 6 views
0

Je souhaite définir une propriété NSString d'une vue principale à partir d'une vue imbriquée. Je le fais maintenant en allouant la classe précédente et en accédant au class.property. Lorsque j'applique le contrôleur de vue par programme et NSLog la propriété de la vue principale, il est null.Définir la propriété d'une autre classe

Comment cela se produit-il?

EDIT:

MainViewController *controller = [[MainViewController alloc] init]; 
switch (indexPath.row) { 
    case 0: 
     controller.category = @"Categorie 1"; 
     break; 
    default: 
     break; 
} 
[controller release]; 
+0

Pouvez-vous poster un code pour voir ce que vous faites? –

+0

Un exemple de code serait apprécié. Cependant, je pense que vous ne devriez pas définir la propriété sur le bon objet. –

+0

Juste fait :) regarde au-dessus – MaikelS

Répondre

1

Vous avez dit que vous allez sauter la viewController donc je suppose que vous essayez de définir une propriété du contrôleur en dessous de la pile de navigation. Au lieu de créer un nouvel objet de la classe, vous devez récupérer l'objet d'origine qui a déjà été créé.

NSArray *viewControllers = [self.navigationController viewControllers]; // array of viewControllers currently on the navigation stack. 
MainVC *mainVC = (mainVC *)[viewControllers objectAtIndex:viewControllers.count - 2]; 
[mainVC setProperty:...]; 
+0

Merci! Comme par magie, mais exactement le contraire! :) Upvoted et accepté! – MaikelS

0

Eh bien d'abord, vous ne pouvez pas accéder aux propriétés d'une instance spécifique en appelant simplement la classe. La classe n'a aucun lien avec une instance spécifique de celle-ci.

Vous devez avoir une variable d'instance dans votre vue imbriquée qui référence le parent. configurez ceci quand vous le créez. Ensuite, lorsque vous êtes dans le contrôleur de vue enfant, vous pouvez toujours accéder au parent.

Quelque chose comme ça chez l'enfant:

MyParentViewController *parentVC; 
+0

Ouais je pensais que c'était ce que j'avais fait. – MaikelS

Questions connexes