Art*_*lon 6 objective-c transitions ios uipageviewcontroller
如何确保在孩子上调用viewWillAppear:和viewDidAppear:(以及其他视图过渡方法)?UIPageViewController'sViewControllers
就我而言,视图转变方法充分呼吁所有除了非常firstViewController的UIPageViewController打开.在那个firstViewController,viewDidAppear:和viewWillAppear:方法实际上是在UIPageViewController's视图转换方法之前调用的.然后当一个人开始滚动时,调用viewWillAppear:和viewDidAppear:方法就像人们对新视图控制器所期望的那样.
这里是我的结构:我有一个BossViewController包含一个OrganizerViewController(一对夫妇不同的组织者,其实,那不过是无关紧要的).该OrganizerViewController包含UIPageViewController,其中包含了一系列的CustomViewControllers.我的代码调用适当的子视图过渡方法按照苹果(https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html对之间的相互作用)BossViewController和OrganizerViewController(全功能,完美等等).问题出在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)
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |