如何最好地将使用一个 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.view
。 UIViewController
的生命周期比 UIView 复杂一点,所以我最终将一些初始化代码从指定的初始化程序移到了 UIViewController
子类中的 viewDidLoad
和 viewWillAppear
方法。
回复评论:在我的应用程序中,许多页面都有独特的交互功能,因此我编写了一个独特的 UIViewController
子类来管理这些功能。有些页面将具有相同的功能,但内容不同。这些将只使用一个UIViewController
子类的多个实例。我的模型对象将创建这些UIViewController
子类并用适当的内容填充它们。
换句话说,没有必要为每个页面编写一个新的UIViewController
子类。一个页面上只有您拥有独特功能的数量。如果您的页面没有做任何事情,您甚至可以只使用UIViewController
而无需子类化。
【讨论】:
我认为的问题是我没有继承uiview,并且只有一个uiviewcontroller。它只是交换视图进出,并处理每个页面需要做的任何事情。为每个页面创建一个 uiviewcontroller 类似乎很痛苦。【参考方案2】:查看An Example iOS 5 iPhone UIPageViewController Application 文章。该章将简要概述页面视图控制器背后的概念,并提供一个示例应用程序来演示此类的实际应用。
【讨论】:
以上是关于如何最好地将使用一个 UIViewController 将所有页面作为 UIView 处理为 StoryBoarding 和 UIPageView 的图书应用程序转换?的主要内容,如果未能解决你的问题,请参考以下文章
如何最好地将 DbType 转换为 System.Type?
如何最好地将用 LAMP 制作的项目转移到 WAMP 而不破坏它?