Передайте NSMutableArray между двумя UIViewController'ами - PullRequest
0 голосов
/ 14 апреля 2010

У меня есть два контроллера представления имени RootViewController и SecondViewController. В FirstViewController у меня есть этот NSMutableArray

@interface RootViewController : UITableViewController {

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

В RootViewController я заполняю UITableView всеми объектами в allClasses

В моем SecondViewController у меня есть

@interface SecondViewController : UIViewController <UITextFieldDelegate,UIPickerViewDelegate> {

NSMutableArray *arrayStrings;}

У меня есть метод, который добавляет новые NSStrings в arrayStrings. Моя цель - иметь возможность передать arrayStrings в RootViewController, попробовав нечто похожее на allClasses = arrayStrings Таким образом, когда RootViewController загружен, он может заполняться новой информацией.

Как бы я справился с этой задачей?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2010

Вы должны иметь ссылку на контроллер корневого представления во втором контроллере представления. И там вам нужно установить allclasses для arrayStrings; В общем, вы можете найти ссылку на любой контроллер представления, помещенный в стек следующим кодом.

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];

            }

        }

Теперь в viewWillAppear RootViewController вам нужно перезагрузить содержимое вашего представления.

Надеюсь, это поможет.

Спасибо

Madhup

0 голосов
/ 14 апреля 2010

в реализации RootViewController

-(void)viewWillAppear:(BOOL)animated

этот метод делегата. Внутри этого метода

написать

self.allClasses = SecondViewControllerObj.arrayStrings;

SecondViewControllerObj - это объект SecondViewController, объявленный в RootViewController как член и используемый для перехода к этому виду

как

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

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