2016-02-21 57 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

相關問題