我有UIPageViewController
。我可以翻页,一切正常。 UIPageViewController
预加载一个ViewController。此时,内存中有两个视图控制器(一个是可见控制器,另一个是预加载控制器)。我想获得两个ViewControllers,以便我可以动态更改一些设置。
问题是如何获得预加载的子视图控制器?如果我无法获得这些控制器,那么在所有预加载的视图控制器上重置某些属性的最佳方法是什么?
答案 0 :(得分:1)
您可以修改可用于构建视图控制器的自定义对象:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [(PageChildViewController *) viewController index];
if (index == 0) {
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)viewControllerAtIndex:(NSUInteger)index {
CustomObject *customObject = self.customObjects[index];
PageChildViewController *childViewController = [PageChildViewController controllerWithIndex:index andCustomObject:customObject];
return childViewController;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [(PageChildViewController *) viewController index];
index++;
if (index == self.pages.count) {
return nil;
}
return [self viewControllerAtIndex:index];
}
如果您需要更新当前可见的页面视图控制器,可以使用:
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
如果您需要重置页面视图控制器缓存,可以使用:
self.pageController.dataSource = nil;
self.pageController.dataSource = self;