3

我有一个容器视图,它使用情节提要嵌入 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?Storyboard Embed Segue 的行为是否与标准序列不同?

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

也请忽略凌乱的实现/各种日志测试,只是我试图找出问题所在。

4

2 回答 2

1

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

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

于 2013-10-29T10:26:42.647 回答
0

你能行的..

尝试在 childViewController 中设置-

@property(nonatomic,retain)parentViewController *parent;

在 ParentViewController 中设置-

ChildViewController *child = [[childviewController alloc]init]; 孩子.父母=自己;

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

于 2013-10-29T09:25:31.513 回答