3

我正在创建一个应用程序来显示一本书UIPageViewController(具有非常好的默认翻页动画)我以核心数据的形式维护与每个页面相关的所有数据。在我的MyModelController.m文件中,在 init 方法下,我正在获取所有数据并初始化pageData数组。但我要展示的这本书是一本大书。那么,有没有办法做这样的事情,dequeueReusableCellWithIdentifier以便只将所需的页面加载到内存中?

如果我的期望是错误的,请纠正我。

4

4 回答 4

2

使用 UIPageViewController 设置初始视图控制器

-setViewControllers:direction:animated:completion:

接下来,实现以下UIPageViewControllerDataSource 方法

– pageViewController:viewControllerBeforeViewController:
– pageViewController:viewControllerAfterViewController:

这些方法允许您在当前视图控制器之前和之后为 UIPageViewController 提供视图控制器。

这样,您只需在内存中保留一个视图控制器(和相应的模型数据)。我确信它在幕后做了一些缓存,但如果是这样,当触发内存不足警告时,它会被释放。

与其将整个数据模型加载到单个数组中,不如在表示单个页面的视图控制器内或在上面提到的两个数据源方法内按需加载当前视图控制器所需的对象。

如果您在 Xcode 4.2 中创建一个新的基于 UIPageViewController 的项目,您将看到默认模板包含演示此内容的代码。

于 2011-10-31T18:30:37.060 回答
1

如果我弄错了,请纠正我,但我相信UIPageViewController,默认情况下,只会将下一页和上一页加载到内存中,因此您不必担心内存管理。

于 2011-11-01T00:28:36.677 回答
0

不肯定我理解你的问题,但听起来你不想将你的书的所有内容都加载为页面对象。而不是在您的 init 方法中加载本书的全部内容,只加载正在显示的页面,然后当用户“翻转”页面时,根据当前显示的页面加载下一个或上一个页面。

于 2011-10-24T18:46:56.133 回答
0

如果您使用的是 PDF 书籍,则只能在调用这两个方法时加载所需的页面并传递给视图控制器

– pageViewController:viewControllerBeforeViewController:
– pageViewController:viewControllerAfterViewController:
于 2011-11-09T06:43:05.270 回答