我有一个图书应用程序,它有大约 30 个页面,每个页面都是单个 UIViewController 中的 UIView。我想将此转换为使用 StoryBoarding 和 UIPageViews 的应用程序。看起来 UIPageView 中的每个“页面”都必须是 UIViewController,而不是 UIView。解决这个问题的最佳方法是什么?我需要从每个 UIView 页面中制作一个 UIViewController 吗?
2 回答
是的。将所有子类重写UIView
为UIViewController
子类。我已经用我的一些项目完成了它,结果证明它有点乏味。对于我的项目,我发现创建一个新的 Xcode 项目并构建新的基础设施是最简单的。然后UIViewController
为我的每个旧课程创建新UIView
课程。然后我将大部分代码从旧UIView
类复制并粘贴到新UIViewController
类中。self
我改变了很多self.view
。a 的生命周期UIViewController
比 UIView 复杂一点,所以我最终将一些初始化代码从指定的初始化程序移到了我的子类中的viewDidLoad
andviewWillAppear
方法中UIViewController
。
对评论的回应:在我的应用程序中,许多页面都有独特的交互功能,所以我编写了一个独特的UIViewController
子类来管理这些功能。有些页面将具有相同的功能,但内容不同。这些将只使用一个子类的多个实例UIViewController
。我的模型对象将创建这些UIViewController
子类并用适当的内容填充它们。
换句话说,没有必要UIViewController
为每个页面编写一个新的子类。一个页面上只有您拥有独特功能的数量。如果您的页面不做任何事情,您甚至可以只使用UIViewController
而不使用子类。
查看示例 iOS 5 iPhone UIPageViewController 应用程序文章。该章将简要概述页面视图控制器背后的概念,并提供一个示例应用程序来演示这个类的实际应用。