Как я могу передавать информацию между 2 различными контроллерами представления? - PullRequest
2 голосов
/ 15 апреля 2010

Это простой вопрос:

У меня есть 2 различных контроллера представления, и у каждого есть свои собственные данные, сохраненные в его файле .m. Я хочу взять значение, например, целочисленное значение (int i=3;), которое объявлено в ViewController1, и передать его ViewController2, чтобы я мог использовать это значение во втором контроллере представления.

Может кто-нибудь сказать, пожалуйста, как это сделать?

Ответы [ 3 ]

2 голосов
/ 15 апреля 2010

2014 Edit - если кто-то случится, не слушайте меня.«Лучший способ» действительно лучший.

Хороший путь - Создайте свой собственный метод initWithI на ViewController2

Лучший путь - Создайте ViewController2 как обычно, а затем установите значениенедвижимость.

Best Way - это запах кода, вы тесно связываете данные с ViewController.Вместо этого используйте CoreData или NSUserDefaults.

1 голос
/ 15 апреля 2010

Инициализируйте новый контроллер представления со значением.

- (id)initWithValue:(int)someValue {
    if (self = [super initWithNibName:@"MyViewController" bundle:nil]) {
        myValue = someValue;
    }
    return self;
}

Затем из вашего другого контроллера представления (при условии, что этот другой контроллер представления принадлежит UINavigationController)

- (void)showNextViewControler {
    MyViewController *vc = [[[MyViewController alloc] initWithValue:someValue] autorelease]
    [self.navigationController pushViewController:vc animated:YES];
}

И / или чтобы сделать это после инициализации, создайте метод или свойство, позволяющее установить его.

- (void)setSomeValue:(int)newValue {
    myValue = newValue;
}

Тогда

- (void)showNextViewControler {
    MyViewController *vc = [[[MyViewController alloc] initWithNibName:@"Foo" bundle:nil] autorelease]
    [vc setValue:someValue]
    [self.navigationController pushViewController:vc animated:YES];
}
1 голос
/ 15 апреля 2010

Если вы встраиваете ViewController1 в UINavigationController , это довольно распространенный вариант использования. Внутри ViewController1 добавьте этот код, где вы хотите показать ViewController2 (например, в действии):

ViewController2 *controller = [[ViewController2 alloc] initWithNibName:<nibName> bundle:nil];
[controller setData:<your shared data>]; 
[self.navigationController pushViewController:controller animated:YES];
[controller release];

Об остальном позаботится навигационный контроллер.

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