如何使用Interface Builder中的Storyboard连接页面视图控制器的dataSource出口

Ter*_*Tan 15 objective-c interface-builder uistoryboard uipageviewcontroller

根据苹果的文档在这里,我们应该能够通过连接网点页面视图控制器加入到故事板,然后选择设置数据源.

使用故事板创建页面视图控制器界面

基于页面的应用程序Xcode模板创建一个新的项目,其中页面视图控制器作为初始场景.

要将页面视图控制器添加到现有故事板,请执行以下操作:

  1. 将页面视图控制器拖出库.将页面视图控制器场景添加到故事板.
  2. 在"属性"检查器中,设置适当的选项.
  3. (可选)通过连接相应的插座来设置委托,数据源或两者.
  4. 通过在"属性"检查器中选择"是初始视图控制器"选项(或以其他方式在用户界面中显示视图控制器)将其显示为第一个视图控制器.

然后我像这样定义了一个UIPageViewController子类

@interface DetailsPageViewController : UIPageViewController <UIPageViewControllerDataSource>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试连接数据源插座时,它不会突出显示控制器或允许连接它.我也试过在其他控制器上实现UIPageViewControllerDataSource,但我有同样的问题,无法连接插座.

有人可以帮忙吗?

小智 6

我没能找到在IB中做到这一点的方法.必须使用以下代码:

self.delegate=self;
self.dataSource=self;
Run Code Online (Sandbox Code Playgroud)


Jul*_*mes 5

请注意,Apple 文档指出 UIPageViewController 通常不是子类。您UIPageViewControllerDataSource不需要是视图控制器的子类。你可以让它成为 NSObject 的子类。

通常,只有出现在情节提要上的内容,即 UI 元素,才会在出现在情节提要左侧的文档大纲中列出(前提是它没有被隐藏)。如果您的委托/数据源不存在,您可以通过将“对象”(黄色立方体)拖到文档大纲中的适当场景中来将其放在那里。

然后单击您刚刚添加的对象,并使用 Identity Inspector 窗格将其具体类更改为您的数据源类。然后,通过从连接检查器拖动一条线到它上面,它可以以正常方式用作连接的目标。