2010-04-14 7 views
0

J'ai deux contrôleurs de vue nommés RootViewController et SecondViewController. Dans le FirstViewController j'ai cette NSMutableArrayTransmettre NSMutableArray entre deux contrôleurs UIViewController

@interface RootViewController : UITableViewController { 

NSMutableArray *allClasses;}@property (nonatomic,retain) NSMutableArray *allClasses; 

Dans le RootViewController je alimenter le UITableView avec tous les objets dans allClasses

Dans mon SecondViewController je

@interface SecondViewController : UIViewController <UITextFieldDelegate,UIPickerViewDelegate> { 

NSMutableArray *arrayStrings;} 

J'ai une méthode qui ajoute une nouvelle NSStrings à arrayStrings. Mon but est de pouvoir passer le arrayStrings au RootViewController en essayant quelque chose de similaire à allClasses = arrayStrings. De cette façon, lorsque le RootViewController est chargé, il peut remplir de nouvelles informations.

Comment pourrais-je accomplir cette tâche?

Répondre

0

à RootViewController mettre en œuvre

-(void)viewWillAppear:(BOOL)animated 

cette méthode déléguée. A l'intérieur de cette méthode

écrire

self.allClasses = SecondViewControllerObj.arrayStrings; 

SecondViewControllerObj est l'objet de SecondViewController déclaré dans RootViewController en tant que membre et qui est utilisé pour accéder à ce point de vue

comme

if(SecondViewControllerObj == nil) 
    { 
     SecondViewControllerObj = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 
    } 

     [self.navigationController pushViewController:SecondViewControllerObj animated:YES]; 
0

Vous avez besoin avoir la référence du contrôleur de vue racine dans le second contrôleur de vue. Et là, vous devez définir les allclasses à arrayStrings; En général, vous pouvez trouver une référence à n'importe quel contrôleur de vue poussé dans la pile par le code suivant.

NSArray *viewConts = [[self navigationController] viewControllers]; 
     for(int i=0;i<[viewConts count];i++) 
     { 
      if([[viewConts objectAtIndex:i] isKindOfClass:[RootViewController class]]){ 
       RootViewController *rootController = (RootViewController *)[viewConts objectAtIndex:i]; 
       [rootController setAllClasses:arrayStrings]; 

      } 

     } 

Maintenant dans viewWillAppear de RootViewController vous devez recharger le contenu de votre vue.

Espérons que cela aide.

Merci,

Madhup

Questions connexes