如何最好地将使用一个 UIViewController 将所有页面作为 UIView 处理为 StoryBoarding 和 UIPageView 的图书应用程序转换?

Posted

技术标签:

【中文标题】如何最好地将使用一个 UIViewController 将所有页面作为 UIView 处理为 StoryBoarding 和 UIPageView 的图书应用程序转换?【英文标题】:How to best transition a book app that uses one UIViewController to handle all the pages as UIViews to StoryBoarding and UIPageView? 【发布时间】:2012-02-20 04:10:07 【问题描述】:

我有一个图书应用程序,它有大约 30 个页面,每个页面都是单个 UIViewController 中的 UIView。我想将此转换为使用 StoryBoarding 和 UIPageViews 的应用程序。看起来 UIPageView 中的每个“页面”都必须是 UIViewController,而不是 UIView。解决这个问题的最佳方法是什么?我需要从每个 UIView 页面中制作一个 UIViewController 吗?

【问题讨论】:

查看An Example ios 5 iPhone UIPageViewController Application @beryllium 太糟糕了,你不能奖励 cmets,因为这就是我要找的东西 【参考方案1】:

是的。将所有UIView 子类重写为UIViewController 子类。我已经用我的一些项目完成了它,结果证明它有点乏味。对于我的项目,我发现创建一个新的 Xcode 项目并构建新的基础设施是最简单的。然后为我的每个旧 UIView 类创建新的 UIViewController 类。然后我将大部分代码从旧的UIView 类复制并粘贴到新的UIViewController 类中。我将很多self 更改为self.viewUIViewController 的生命周期比 UIView 复杂一点,所以我最终将一些初始化代码从指定的初始化程序移到了 UIViewController 子类中的 viewDidLoadviewWillAppear 方法。

回复评论:在我的应用程序中,许多页面都有独特的交互功能,因此我编写了一个独特的 UIViewController 子类来管理这些功能。有些页面将具有相同的功能,但内容不同。这些将只使用一个UIViewController 子类的多个实例。我的模型对象将创建这些UIViewController 子类并用适当的内容填充它们。

换句话说,没有必要为每个页面编写一个新的UIViewController 子类。一个页面上只有您拥有独特功能的数量。如果您的页面没有做任何事情,您甚至可以只使用UIViewController 而无需子类化。

【讨论】:

我认为的问题是我没有继承uiview,并且只有一个uiviewcontroller。它只是交换视图进出,并处理每个页面需要做的任何事情。为每个页面创建一个 uiviewcontroller 类似乎很痛苦。【参考方案2】:

查看An Example iOS 5 iPhone UIPageViewController Application 文章。该章将简要概述页面视图控制器背后的概念,并提供一个示例应用程序来演示此类的实际应用。

【讨论】:

以上是关于如何最好地将使用一个 UIViewController 将所有页面作为 UIView 处理为 StoryBoarding 和 UIPageView 的图书应用程序转换?的主要内容,如果未能解决你的问题,请参考以下文章

如何最好地将 C++/Cython 项目编译成可执行文件?

如何最好地将 DbType 转换为 System.Type?

如何最好地将 fb 评论从 http 移动到 https

如何最好地将用 LAMP 制作的项目转移到 WAMP 而不破坏它?

如何最好地将应用程序从 sqlite(使用 fmdb)迁移到 CoreData?

如何最好地将字符串表示形式转换为 DbType?