【问题标题】:How can I pass data from parent to child view?如何将数据从父视图传递到子视图?
【发布时间】:2013-11-08 08:04:25
【问题描述】:

我有一个容器视图,它使用情节提要嵌入 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)有没有更好的方法将数据从容器视图传递到嵌入表?

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

【问题讨论】:

标签: ios ios7 uistoryboardsegue pass-data uicontainerview


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以的..

    试试 在子视图控制器中 设置-

    @property(nonatomic,retain)parentViewController *parent;

    在 ParentViewController 集合中-

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2011-03-27
      • 1970-01-01
      • 2012-10-23
      相关资源
      最近更新 更多