Как я могу передать данные из родительского представления в дочернее?

У меня есть представление контейнера, в котором используется переход для встраивания раскадровки для загрузки встроенного представления статической таблицы. Идентификатор перехода — «КОНТЕЙНЕР».

Когда я запускаю следующий код, prepareForSegue фактически никогда не вызывается, поэтому данные не передаются от родителя к дочернему.

 - (void)viewDidLoad {
[super viewDidLoad];

if ([sGender isEqualToString:@"MALE"]) {
    containerGender = @"MALE";

    if ([containerGender isEqualToString:@"MALE"]){
        NSLog(@"MALE");
    }else{
        NSLog(@"BROKEN");
    } 
}
else if ([sGender isEqualToString:@"FEMALE"]) {
    containerGender = @"FEMALE";
}
}


-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"CONTAINER"]) {
    if([containerGender isEqualToString:@"MALE"]) {

        if ([containerGender isEqualToString:@"MALE"]){
            NSLog(@"MALE");
        }else{
            NSLog(@"BROKEN");
        } 


        SportTableViewController *tableView = segue.destinationViewController;
        tableView.sportGender = @"MALE";    
    }
    else if ([containerGender isEqualToString:@"FEMALE"]){
        SportTableViewController *tableView = segue.destinationViewController;
        tableView.sportGender = @"FEMALE";    
    }
}
}

Мой вопрос:

а) Почему не вызывается prepareForSegue? Отличается ли поведение Storyboard Embed Segue от стандартной последовательности?

б) Есть ли лучший способ передачи данных из представления контейнера во встроенную таблицу?

Также, пожалуйста, игнорируйте беспорядочную реализацию/различные тесты журнала, просто мои попытки понять, что происходит не так.


person Andy A    schedule 29.10.2013    source источник
comment
возможный дубликат Передача данных между контроллерами представления   -  person Grzegorz Krukowski    schedule 29.10.2013
comment
На самом деле это не так, я хорошо знаю, как передавать данные. Очевидно, мой вопрос возник из-за простого непонимания того, как работают представления контейнеров.   -  person Andy A    schedule 29.10.2013


Ответы (2)


Мой вопрос на самом деле связан с непониманием того, как контейнерные представления загружают свои встроенные представления. Судя по всему, все это происходит до viewDidLoad. Это означает, что мое преобразование sGender в containerGender произошло слишком поздно.

Я исправил это, передав sGender напрямую во встроенное представление. Я думал, что уже пробовал это, но вчера явно был медленный день;).

person Andy A    schedule 29.10.2013

ты можешь это сделать..

попробуйте в наборе childViewController-

@property(nonatomic,retain)parentViewController *parent;

а также

в наборе ParentViewController-

ChildViewController *child = [[childviewController alloc]init]; ребенок.родитель=я;

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

person Rajpal Thakur    schedule 29.10.2013