UIPageViewController 强制重新加载 ChildView 控制器

Posted

技术标签:

【中文标题】UIPageViewController 强制重新加载 ChildView 控制器【英文标题】:UIPageViewController to Force reload ChildView controller 【发布时间】:2014-02-18 14:23:45 【问题描述】:

我在 Root UIPageViewController 中有一个滑块,它需要将滑块值传递给子视图控制器。除了已经加载的子视图控制器之外,它适用于其他子视图控制器!

我在 RootView 中有 Slider 用于我调用的 Slider Value Change -

- (void)sliderValueChanged:(UISlider *)slider 
    fontValue = slider.value;
    DetailsVC *dataViewController  = [self viewControllerAtIndex:self.newsIndex storyboard:self.storyboard];
    [dataViewController refreshViewForFontSize:slider.value];

我有 UIPageViewController 的常用方法,效果很好。只是问题是它只有在子 ViewControllers 中调用 ViewDid Load 方法后才有效

- (DetailsVC *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard 
    // Return the data view controller for the given index.
    if (([self.pageContent count] == 0) || (index >= [self.pageContent count])) 
        return nil;
    
    DetailsVC *dataViewController      = [[DetailsVC alloc] init];
    dataViewController.fontValue       = fontValue;
    return dataViewController;

【问题讨论】:

【参考方案1】:

终于找到解决办法了

    DetailsVC *dataViewController      = [self viewControllerAtIndex:currentIndex-1 storyboard:self.storyboard];
    dataViewController.textColor = textColor;
    NSArray *viewControllers                    = @[dataViewController];
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

重新加载子视图控制器的正确方法是通过

setViewControllers:方向:动画:完成:

如果有人需要示例项目,我已将其上传至 https://github.com/bishalg/BGPageViewController

【讨论】:

以上是关于UIPageViewController 强制重新加载 ChildView 控制器的主要内容,如果未能解决你的问题,请参考以下文章

在几秒钟内重新加载 UiPageViewController

在 UIPageViewController 中重新加载视图

Swift - 在 vi​​ewDidAppear 中使用新信息重新加载 UIPageViewController

如何重新加载 UIPageViewController 以在 Swift 中重新加载其视图

iOS - 如何在 UIPageViewController 中设置 UIScrollView 以在重新启用后开始滚动

UIPageViewController 向后滑动未显示最后一个 ViewController。它再次重新加载