我正在使用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,但由于viewDidLoad
,viewWillappear
和viewDidAppear
未被调用,我无法这样做
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
我的viewDidLoad
和viewDidAppear
未被调用。
如何将数据从childVC传递到另一个ChildVC。
答案 0 :(得分:0)
那是因为当你启动所有控制器时,父控制器没有做addChildViewController'。它仅在显示新控制器时才这样做(我看过代码)。
从该控制器移出后,它将其从控制器层次结构中删除。
我会使用委托或通知来传递数据。 另一个选项(我不喜欢)是为优惠券控制器提供categoryViewController的引用。