【问题标题】:Dynamically reload UIPageViewController after dataSource changed数据源更改后动态重新加载 UIPageViewController
【发布时间】:2012-08-06 18:16:09
【问题描述】:

所以我正在尝试创建一个类似 ibooks 的阅读器,我需要在从 web 服务获取数据后动态更新 UIPageViewController 的内容。由于一系列原因,我必须在开始时实例化它,然后在数据到来时对其进行更新。

我是这样创建的:

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 有这样的东西吗?

【问题讨论】:

    标签: ios ios5 uipageviewcontroller ibooks


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      如果viewControllerAtIndex:不像我最初假设的那样访问self.controllers,它可能应该是

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

      改为

      【讨论】:

      • 是否 viewControllerAtIndex: 访问 self.controllers 或其他的元素?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      相关资源
      最近更新 更多