UIPageViewController Child的viewWillAppear:&viewDidAppear:转换调用

Art*_*lon 6 objective-c transitions ios uipageviewcontroller

如何确保在孩子上调用viewWillAppear:viewDidAppear:(以及其他视图过渡方法)?UIPageViewController'sViewControllers

就我而言,视图转变方法充分呼吁所有除了非常firstViewControllerUIPageViewController打开.在那个firstViewController,viewDidAppear:viewWillAppear:方法实际上是在UIPageViewController's视图转换方法之前调用的.然后当一个人开始滚动时,调用viewWillAppear:viewDidAppear:方法就像人们对新视图控制器所期望的那样.

这里是我的结构:我有一个BossViewController包含一个OrganizerViewController(一对夫妇不同的组织者,其实,那不过是无关紧要的).该OrganizerViewController包含UIPageViewController,其中包含了一系列的CustomViewControllers.我的代码调用适当的子视图过渡方法按照苹果(https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html对之间的相互作用)BossViewControllerOrganizerViewController(全功能,完美等等).问题出在OrganizerViewController它的孩子UIPageViewController和它的第一个孩子之间CustomPageViewController.

我已经尝试调用beginAppearanceTransition:和endAppearanceTransition:在UIPageViewController viewWillAppear:viewDidAppear:- 但这导致"不平衡调用"错误日志到控制台.

这是UIPageViewController设置代码,所有这些都在OrganizerViewController:

- (void)configurePVC
{
    NSDictionary *key = @{UIPageViewControllerOptionInterPageSpacingKey : @([UIScreen mainScreen].bounds.size.width * 0.5)};
_pvc = [[AVSCustomPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                       navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:key];
    self.pvc.delegate = self;
    self.pvc.dataSource = self;

    _pvcArray = [[NSMutableArray alloc] init];

    CustomViewController *daily = (CustomViewController *)[self viewControllerAtIndex:6];
    self.index = 6;

    [self.pvcArray addObject:daily];

    [self.pvc setViewControllers:self.pvcArray
                   direction:UIPageViewControllerNavigationDirectionForward
                    animated:YES
                  completion:nil];

    [self addChildViewController:self.pvc];
    [self.dailyContainerView addSubview:self.pvc.view];
    self.pvc.view.frame = self.dailyContainerView.bounds;
    [self.pvc didMoveToParentViewController:self];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger index = [(CustomViewController *)viewController index];
    if (index == 0) {
        return nil;
    }
    index--;

    return [self viewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {

    NSUInteger index = [(CustomViewController *)viewController index];
    if (index == 6) {
        return nil;
    }
    index++;

    return [self viewControllerAtIndex:index];
}
- (UIViewController *)viewControllerAtIndex:(NSUInteger)index
{
    CustomViewController *viewController = [[CustomViewController alloc] init];
    viewController.index = index;


    return viewController;
}
Run Code Online (Sandbox Code Playgroud)