簡體   English   中英

Interface Builder中的自定義UIView

[英]Custom UIView from Interface Builder

我正在嘗試保持組織有序並為我的應用創建視圖層次結構。 因此,例如我想創建一個自定義視圖來顯示一些文本,另一個自定義視圖來顯示進度,然后在使用基於視圖的應用程序模板創建的主視圖中使用所有這些視圖。

我知道如何以編程方式創建它 - 您創建UIView子類,實現drawRect方法,在Interface Builder中放置一個空的UIView ,並將它的Class放到我的自定義類中。 我的問題是我想在Interface Builder中以編程方式創建這些自定義視圖。

到目前為止,我已經使用XIB文件創建了UIViewController控制器,並在模板中使用視圖控制器的viewDidLoad方法創建了自定義視圖控制器實例,並將其視圖添加為Interface Builder中添加的空UIView的子視圖(同樣可以更改類在程序化方法中)。

它可以工作,但對我來說更糟糕的是,我很難相信沒有更好的方法可以在界面構建器中添加這些自定義視圖,而無需實現viewDidLoad方法並創建控制器並在其中添加視圖那種方法。

為此,您必須為Interface Builder創建一個使用自定義控件類的插件。 只要創建並安裝插件,就可以通過拖放操作將視圖實例添加到Interface Builder中的另一個窗口或視圖中。 要了解有關創建IB插件的信息,請參閱“ 界面生成器插件編程指南”和Aaron Hillegass的書“ Cocoa Programming for Mac OS X”中創建自己的IB調色板控件一章。

以下是對類似問題的接受答案的原始作者的鏈接。

這最初是在Ratinho的帖子中發表的評論,但卻變得過大了。

雖然我自己的經驗與這里及其上面提到的所有內容一致,但有些事情可能會減輕你的痛苦,或者至少讓事情變得不那么糟糕。

從公共類派生所有自定義UIView類,比如EmbeddableView。 使用Class標識(或可重載方法)包裝此基類中的所有initWithCoder邏輯,以確定要初始化的NIB。 這仍然是一個黑客,但你至少正式化界面規則和隱藏機制。

此外,您可以通過使用與自定義視圖配對的“微控制器”類來處理其委托/操作方法,並通過其自己的委派協議彌補與主UIViewController的差距,從而進一步增強您的Interface Builder體驗。 所有這些都可以使用Interface Builder中的連接器連接在一起。

底層的UIViewController只需要實現足夠的功能來滿足“微控制器”委托模式。

您已經擁有通過更改類名和處理nib加載來添加自定義視圖的詳細信息。 “微控制器”(如果使用的話)可以只是添加到NIB的 NSObject派生類,如此處所建議的那樣

雖然我已經在孤立的情況下完成了所有這些步驟,但我從未采用過這種正式的解決方案,但通過一些規划,它應該是相當可靠和強大的。

也許我不明白你?
如果您在“界面”構建器中有庫,則可以移動您想要的每個組件並將其放在視圖上。 (您可以通過添加UIView添加另一個視圖並在第4個選項卡中更改其類名)。
然后你用IBOutlet聲明變量並將它們從你的文件所有者的第二個標簽連接到他們的組件......另一個問題?

不幸的是,你無法用UIKit做你想做的事。 IB插件僅適用於OS X,Apple明確不允許它們與iOS開發一起使用。 與它們有關的不是靜態庫。 誰知道,有一天他們可能會改變這一點,但我不會屏住呼吸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM