2016-02-21 35 views
0

我按照this answer中的说明创建了一个可重用的自定义UIView,这个自定义UIView带有一个xib,我可以通过引用自定义类来嵌入到Storyboard中。这效果很好,我可以成功加载视图广告。不过,我希望我的嵌入视图控制器能够连接到嵌入式视图的IBActions。在链接的例子中,自定义视图会收到自己的操作,但这看起来很糟糕。我通过创建委托协议来解决这个问题,该委托协议对于将事件转发给其委托的自定义视图,但是这感觉像是应该做的更多工作。此外,Interface Builder不允许我在UI中使用引用来连接委托,所以我必须以编程方式进行。如何响应从xib加载的自定义视图中发生的操作?

我真正想要的是在我的自定义视图中创建一个自定义IB动作,如someActionHappened,然后在嵌入视图控制器中连线。什么是完成这个最好的方法?

+0

代表似乎是一个很好的解决方案。 – Sulthan

回答

1
  • 一个的.xib文件中有一个文件的所有者,你可以看到,当你正在编辑选择它。

  • 当您加载笔尖时,您可以指定owner

您可以(而且必须)做这两件事情的类(文件的所有者在笔尖和在加载时实际拥有者)的比赛。

因此,可以将一个动作从笔尖中的某个元素挂钩到文件所有者类中的一个IBAction,并在加载该笔尖时完成。问题解决了。

所以:

不过,我想我的嵌入视图控制器(S),能够连接到我的内嵌视图的IBActions

所以你的解决方案是让你的文件的所有者(在你的笔尖)和实际的owner(在笔尖加载时)是你的嵌入式视图控制器。现在你的嵌入视图控制器被允许有一个IBAction,你可以连接到它的笔尖。

+0

如果你想让它与多个视图控制器类一起工作,你可能需要额外使用一些协议或超类来玩,但它绝对可以完成。 – matt

相关问题