Доступ к переменным из другого ViewController - PullRequest
1 голос
/ 02 июля 2011

FirstViewController.h:

#import <UIKit/UIKit.h>

    @interface FirstViewController : UIViewController
    {
    NSArray *listData;
}
-(IBAction) GoToInsert: (id) sender;
@property (nonatomic, retain) NSArray *listData;
@end

FirstViewController.m:

-(IBAction) upisiRezultat:(id)sender
{
    SecondViewController *secondView = [[SecondViewController alloc] initWithNibName: nil bundle: nil];
    [self presentModalViewController: secondView animated: NO];
    [secondView release];
}

- (void)viewDidLoad
{NSArray *array = [[NSArray alloc] initWithObjects:@"236", @"46",
                   @"147", @"8", @"56", @"69", @"114", @"2",
                   @"96", @"518", @"2", @"54", @"236", nil];
    self.listData = array;
    [array release];
    [super viewDidLoad];
}

SecondViewontroller.h

@interface SecondViewController : UIViewController {

}
-(IBAction) insert;
@end

SecondViewontroller.m

-(IBAction) insert
{
    /* Here should be the code to insert some number in listData from FirstViewController */
}

Итак, когда приложение загружается, оно загружает FirstViewController.xib и показывает массив listData на экране, когда я нажимаю кнопку «Перейти к вставке», загружается другое представление (SecondViewController.xib) с кнопкой«Вставить», который должен добавить некоторое число в массив и отобразить новый массив в первом представлении.

Как это сделать?

Ответы [ 3 ]

0 голосов
/ 02 июля 2011

Я не знаю, есть ли у вас imported SecondViewController.h, и я думаю, у меня есть идея, что вы пытаетесь сделать.

0 голосов
/ 02 июля 2011

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

Помещенный: int myNumber; в файле имя_проекта_AppDelegate.h

Затем в каждом из ваших контроллеров представления вы можете импортировать свой файл AppDelegate.h и затем выполнить что-то вроде:

AppDelegate * appDelegate = (AppDelegate *) [[UIApplication sharedApplication] делегат]; а затем прочитайте или измените:

appDelegate.myNumber

===

Это не то, что вы должны делать постоянно (вы не хотите, чтобы ваш appDelegate был гигантским хранилищем данных), но это может дать вам быстрое решение при необходимости ...

0 голосов
/ 02 июля 2011

Вы можете получить доступ к родительскому контроллеру вида с помощью self.parentViewController. Поэтому что-то вроде этого (то есть я не проверял это - вы должны) должно работать:

FirstViewController *firstViewController = self.parentViewController;
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:firstViewControl.listData];
[newArray addObject:@"42"];
[firstViewController setListData:[NSArray arrayWithArray:newArray]];
[newArray release];

Однако, поскольку вы хотите добавить объекты в listArray, было бы более естественным вместо этого использовать NSMutableArray. Кроме того, вы в настоящее время добавляете NSString s в массив, когда он выглядит так, как будто вы хотите иметь NSNumber объектов.

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