iPhone SDK: Как передать массив значений из ViewController в другой ViewController? - PullRequest
1 голос
/ 22 февраля 2011

Я попытался создать метод, подобный приведенному ниже, в SecondViewController:

-(void)setValue:(NSMutableArray*)array
 { 
      //NSMutableArray *newArray = [[NSMutableArray alloc] init];
      newArray = [array retain];
 }

и передать значение из FirstViewController, используя объект SecondViewController с именем second:

[second setValue:existingArray];

existingArray является NSMutableArray.

Что может быть не так?

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

В коде вы установили массив в объекте "second" для SecondViewController.

Так что вам нужно использовать этот объект для отображения SecondeViewController, иначе какне будет отображать массив.

Проверьте следующий код.

 //   In the FirstViewController

- (void)buttonClicked:(id)sender{

    SecondViewController *second = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle: nil];
 [second setValue:existingArray];
 [self.navigationController pushViewController:second animated:YES];
 [second release];

}

Здесь в коде я присваиваю данные массиву во "втором" объекте и использую егообъект для отображения контроллера.

С уважением,

Сатья

0 голосов
/ 22 февраля 2011

Вы можете использовать свойство вместо установщика, который у вас там (который выглядит плохо).Вопрос в том, действительно ли вам нужно сделать копию массива или достаточно сохранения?

Создайте NSMutableArray * myArray в качестве локальной переменной в SecondViewController.Добавить свойство @property (nonatomic, retain) NSMutableArray * myArray;в интерфейсе.

Синтезируйте и установите его, просто вызовите [mySecondViewController setMyArray: newArray];

Если вы правильно создали экземпляр SecondViewController и если массив, который вы хотите отправить, не равен нулю, тогда он должен работать.

если вы сделаете это следующим образом:

-(void)setValue:(NSMutableArray*)array
 { 
      NSMutableArray *newArray = [[NSMutableArray alloc] init];
      newArray = [array mutableCopy];
 }

newArray будет переменной, объявленной внутри метода SetValue, после того как программа выйдет из метода setValue, переменная newArray больше не будет доступна.,Также вы теряете память, потому что newArray никогда не выпускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...