dataSource更改后dynamic重新加载UIPageViewController

所以我想创build一个类似ibooks的阅读器,并且需要在从webservice获取数据后dynamic更新UIPageViewController的内容。 由于很长的一系列原因,我必须在开始时将它初始化,然后在数据到来时进行更新。

我是这样创build的:

NSDictionary *options = [NSDictionary dictionaryWithObject: [NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin] forKey: UIPageViewControllerOptionSpineLocationKey]; self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options: options]; self.pageController.dataSource = self; self.pageController.delegate = self; [[self.pageController view] setFrame:[[self view] bounds]]; MovellaContentViewController *initialViewController = [self viewControllerAtIndex:0]; self.controllers = [NSArray arrayWithObject:initialViewController]; [self.pageController setViewControllers:self.controllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; [self addChildViewController:self.pageController]; [[self view] addSubview:[self.pageController view]]; [self.pageController didMoveToParentViewController:self]; 

然后我只是设置self.controllers = newControllersArray;

我正在寻找像UITableViewController reloadData的东西,是否有这样的事情UIPageViewController?

你必须发送setViewControllers:direction:animated:completion:再次给pageController,并给它第一个视图控制器来显示:

 [self.pageController setViewControllers:[NSArray arrayWithObject: [self viewControllerAtIndex:0] ] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

如果viewControllerAtIndex:不像我viewControllerAtIndex:那样访问self.controllers ,那应该是

 [self.pageController setViewControllers:[NSArray arrayWithObject: [self.controllers objectAtIndex:0] ] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

代替

主要的问题是,webview拦截所有用户触摸,因此UiPageViewController没有调用委托方法。 一旦设置webview忽略用户触摸事件,一切开始正常工作。