我有一个容器视图,它使用storyboard embed segue来加载嵌入式静态表视图。 segue ID是'CONTAINER'。
当我运行以下代码时,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";
}
}
}
我的问题是:
a)为什么没有调用prepareForSegue?故事板嵌入Segue的行为是否与标准序列不同?
b)是否有更好的方法将数据从容器视图传递到嵌入式表?
另外请忽略凌乱的实现/各种日志测试,只是我试图弄清楚什么是错误的。
答案 0 :(得分:1)
我的问题实际上源于对容器视图如何加载其嵌入视图的误解。显然,这一切都发生在viewDidLoad之前。这意味着我将sGender转换为containerGender的时间太晚了。
我通过直接将sGender传递给嵌入视图来修复它。我以为我已经尝试过了,但昨天显然是一个缓慢的日子;)。
答案 1 :(得分:0)
你可以做到..
试 在childViewController中 设置 -
@property(nonatomic,retain)parentViewController * parent;
和
在ParentViewController集中-
ChildViewController * child = [[childviewController alloc] init]; child.parent =自我;
它将在子视图中设置您的父类,您可以通过子视图控制器中的父对象获取数据。