我用它来实现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
时,它同时加载所有的子dvc。现在我想将点击时的数据从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
没有被调用。
如何将数据从childdvc传递到另一个childdvc。
那是因为当你初始化所有控制器时,父控制器不会做'addChildViewController'。它只在显示新控制器时才这样做(我已经查看了代码)。
当它离开这个控制器后,它将从控制器层次结构中移除。
我将使用委托或通知来传递数据。另一个选项(我不喜欢)是给优惠券控制器一个来自categoryViewController的引用。