UIPageViewController 缓存和交换具有相似内容的页面的视图层次结构

Posted

技术标签:

【中文标题】UIPageViewController 缓存和交换具有相似内容的页面的视图层次结构【英文标题】:UIPageViewController cache and swap view hierarchy for pages with similar content 【发布时间】:2013-02-10 19:59:23 【问题描述】:

我的 UIViewController 中嵌入了一个 UIPageViewController。寻呼机可以包含 5-38 个页面(每个页面是 UIViewController 子类的一个实例),具体取决于具体情况。我注意到,根据我在每个页面上制作 UI 元素的复杂程度,应用程序会显着变慢,并且在滑动到下一页时非常慢。

事情是这样的——每个页面上的视图都是相同的,除了几个 UITextViews 的值。每次为新页面调用 viewControllerAtIndex 时,我都会在每个页面的 viewDidLoad 方法中构建视图。我觉得必须有一种方法可以为每个页面重复使用相同的视图,并且只需交换应该不同的文本值。谁能描述一下这样做的策略?

就像我说的,除了一些文本的值之外,每个页面都有相同的视图层次结构,所以我真的只是在寻找一种方法来维护每个页面的一个基本视图控制器,但缓存视图层次结构以重新- 用于每一页,并根据页码交换一些简单的文本值。

编辑

我在原始帖子中忘记提及的是,我正在以编程方式构建我的视图,因为页面上的元素数量取决于用户在之前的屏幕上所做的选择。即可能有 5 个 TextView 或 10 个 TextView 等,具体取决于用户在前一个屏幕上选择的内容(在进入 UIPageViewController 之前)。话虽如此,我不相信基于 xib 的方法会起作用,因为初始布局是动态的。

提前致谢!

【问题讨论】:

【参考方案1】:

您是否尝试过使用基于 xib 的视图,您可以将其从 xib 中拉出一次,并保持对它的强烈引用。在控制器的 viewDidLoad 中,您可以将其视图设置为此 xib 基本视图,然后使用正确的文本填充文本视图。

【讨论】:

您好,rdelmar,感谢您的建议。我忘了提到我必须以编程方式构建视图,因为页面上的元素是动态的,基于用户在前一个屏幕上所做的选择(在进入 UIPageViewController 页面集之前)。即页面上可能有 10 个文本视图,或者可能有 4 个,这取决于用户选择的内容。我不确定在这种情况下基于 xib 的视图是否有效,但如果我错了,请纠正我。

以上是关于UIPageViewController 缓存和交换具有相似内容的页面的视图层次结构的主要内容,如果未能解决你的问题,请参考以下文章

UIPageViewController 缓存和交换具有相似内容的页面的视图层次结构

UIPageViewController在以编程方式设置时显示空白视图控制器

uipageviewcontroller 中的 Swift uipageviewcontroller

如何从属于 UIPageViewController 的 UIViewController 之一更改 UIPageViewController?

UIPageViewController - 不符合协议

UIPageViewController 方向只向前