我按照this answer中的说明创建了一个使用xib布局的可重用自定义UIView,我可以通过引用自定义类将其嵌入到我的Storyboard中。这很好用,我可以像宣传的那样成功加载视图。但是我希望我的嵌入视图控制器能够连接到我的嵌入视图的IBActions。在链接的示例中,自定义视图接收自己的操作,但这似乎是糟糕的设计。我通过创建一个委托协议来解决这个问题,该协议用于自定义视图,它将事件转发给它的委托,但这感觉就像需要更多的工作。此外,Interface Builder不允许我使用UI中的引用来连接委托,因此我必须以编程方式进行委托。
我真正想要的是在我的自定义视图中创建自定义IB动作,例如someActionHappened
,然后在嵌入视图控制器中连接它。实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
.xib 文件有一个文件所有者,您可以在编辑时查看并选择该文件。
加载笔尖时,您需要指定owner
。
您可以(并且必须)制作这两件事的类(笔尖中的文件所有者和加载时的实际所有者)匹配。
因此,动作可以从笔尖中的某些东西挂钩到文件所有者类中的IBAction,并且当加载笔尖时它将被实现。问题解决了。
所以:
但是我希望我的嵌入视图控制器能够连接到嵌入视图的IBActions
因此,您的解决方案是使您的文件所有者(在您的笔尖中)和实际的owner
(在笔尖加载时)成为您的嵌入视图控制器。现在,您的嵌入视图控制器可以拥有IBAction,您可以在笔尖中连接它。