在故事板中使用 UIPageViewController

Posted

技术标签:

【中文标题】在故事板中使用 UIPageViewController【英文标题】:Using UIPageViewController in storyboards 【发布时间】:2013-03-31 18:28:37 【问题描述】:

有没有办法在情节提要中为 UIPageViewController 配置数据源、委托和视图控制器而无需编写代码?我确实在 UIPageViewController 中看到了数据源和委托的出口,但是无法在场景之间进行连接,也无法在同一场景中添加额外的控制器。

如果 UIPageViewController 根本无法使用 IB 进行配置,那么在 Interface Builder 中拥有 UIPageViewController 的目的是什么?

【问题讨论】:

【参考方案1】:

它在 Xcode 中是完全可配置的。您将把 data-sourcedelegate 出口连接到继承适当协议(UIPageViewControllerDataSourceUIPageViewControllerDelegate)的类。

但是,您必须对这两种协议进行一些实现——通常是通过访问模型的数据。让 UIPageView 的控制器处理这两个协议是常见的,但不是必需的。如:

@interface MyPageViewController : UIPageViewController
  <UITableViewDataSource,  UITTableViewDelegate>
...
@end

【讨论】:

不能通过 IB 配置的网点的目的是什么? 通过 IB 配置 Outlets。将 UIPageView 出口链接到数据源和委托(通常是您的 UIPageViewController 子类)。然后实现数据源和委托协议方法。在 Xcode 中,当您创建一个作为 UIPageViewController 子类的新文件时,Xcode 模板将包含协议方法的实现。 Apple SDK 文档 - “要更改此类的行为,您应该提供数据源和委托。此类不应被子类化。” 我说的是“通常”——意思是“不总是”。创建一个类 '@interface MyPageViewControllerDataSource : NSObject ... @end' 在 IB 中将一个“对象立方体”拖到对象列表窗格中;将拖动对象的类型设置为MyPageViewControllerDataSource。然后将 UIPageViewController 的“数据源”出口拖到“对象立方体”。然后在新创建的 MyPageViewControllerDataSource 中实现数据源方法。最后投票这个答案并勾选它;因为这是正确的答案。 好的,我明白了。很抱歉投了反对票。打算改回来。

以上是关于在故事板中使用 UIPageViewController的主要内容,如果未能解决你的问题,请参考以下文章

使用故事板中定义的自定义类

如果 UINavigationController 在第一个故事板中,有没有办法在第二个故事板中显示 UINavigationController?

如何在 iOS 的故事板中使用编程定义的字体?

在通用故事板中使用 present 作为弹出框

如何在故事板中正确创建叠加视图?

在框架中覆盖故事板中的图像