无法将数据从一个子viewcontoller传递到另一个childviewcontoller

时间:2015-10-13 12:28:13

标签: ios objective-c iphone uiviewcontroller

我正在使用this来实施ContainerViewContoller。一切都很顺利,但我无法将一个孩子ViewController的数据传递给另一个孩子ViewContoller

CouponCodeViewController *couponVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CouponCodeViewController"];
    couponVC.coponcode=@"this is data";
    couponVC.title = @"Enter Coupon Code";
    [couponVC viewWillAppear:true];

CategoryViewController *categoryVC = [self.storyboard instantiateViewControllerWithIdentifier:@"CategoryViewController"];
    categoryVC.title = @"Choose A Category";



 YSLContainerViewController *containerVC =
    [[YSLContainerViewController alloc]
     initWithControllers:@[couponVC,categoryVC]
     topBarHeight:statusHeight + navigationHeight
     parentViewController:self];

当我调用我的容器ViewController时,它会同时加载所有childVC。现在我想将关于从CouponCodeViewController点击的数据传递给CategoryViewController,但由于viewDidLoadviewWillappearviewDidAppear未被调用,我无法这样做

CouponCodeViewController我将使用它:

- (IBAction)skipAct:(id)sender {

//    CategoryViewController *category=[[CategoryViewController alloc]init];
//    category.userInput=@"this is the data";

    [self.scrollMenuDelegate scrollMenuViewSelectedIndex:1];


}

#pragma mark -- YSLContainerViewControllerDelegate
- (void)containerViewItemIndex:(NSInteger)index currentController:(UIViewController *)controller
{
    [controller viewWillAppear:YES];
}

CategoryViewController我的viewDidLoadviewDidAppear未被调用。

如何将数据从childVC传递到另一个ChildVC。

1 个答案:

答案 0 :(得分:0)

那是因为当你启动所有控制器时,父控制器没有做addChildViewController'。它仅在显示新控制器时才这样做(我看过代码)。

从该控制器移出后,它将其从控制器层次结构中删除。

我会使用委托或通知来传递数据。 另一个选项(我不喜欢)是为优惠券控制器提供categoryViewController的引用。