2013-10-29 147 views
2

我有一个容器视图,它使用故事板嵌入segue来加载嵌入的静态表视图。赛格ID是'容器'。如何将数据从父窗口传递给子窗口?

当我运行下面的代码时,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不叫?故事板是否嵌入Segue的行为与标准Seque行为不同?

b)有没有更好的方式将数据从容器视图传递到嵌入表?

也请忽略凌乱的执行/各种日志测试,只是我试图找出什么是错误的。

+0

[在视图控制器之间传递数据](http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –

+0

其实它不是,我很清楚如何通过数据。它显然是我的问题来自于对容器视图如何工作的一个简单误解。 –

回答

1

我的问题实际上源于对容器视图如何加载其嵌入视图的误解。显然,这一切都发生在viewDidLoad之前。这意味着我将sGender转换为containerGender的时间太晚了。

我通过直接将sGender传递给嵌入式视图来修复它。我原以为我已经试过了,但昨天显然是一个缓慢的日子;)。

0

你可以做到这一点..

尝试 在childViewController SET-

@属性(非原子,保留)parentViewController *父母;

在ParentViewController SET-

ChildViewController *孩子=

[[childviewController的alloc] INIT]; child.parent = self;

它会在childview中设置你的父类,你可以通过子视图控制器中的父对象获取数据。

相关问题