我正在構建一個自定義鍵盤,其中有大約50個UIButton
鍵。我想放些分組信息爲每個鍵,例如,數字,字母,光標等如何通過Interface Builder在UIButton中保存輔助信息?
的第一件事想到的是由tag
場的平均(100爲字母,200號,...等)
另一種選擇是通過a category with Associative References。
但是,這兩種方法都不是很好Interface Builder友好的。還有其他選擇嗎?
我正在構建一個自定義鍵盤,其中有大約50個UIButton
鍵。我想放些分組信息爲每個鍵,例如,數字,字母,光標等如何通過Interface Builder在UIButton中保存輔助信息?
的第一件事想到的是由tag
場的平均(100爲字母,200號,...等)
另一種選擇是通過a category with Associative References。
但是,這兩種方法都不是很好Interface Builder友好的。還有其他選擇嗎?
你寫
我想放些分組信息爲每個鍵,例如,數字,字母,光標等
爲什麼不使用IBOutletCollection
S'
您可以爲每一個 「數字,字母,光標」 聲明數組:
@property (nonatomic) IBOutletCollection(UIButton) NSArray *numberButtons;
@property (nonatomic) IBOutletCollection(UIButton) NSArray *letterButtons;
@property (nonatomic) IBOutletCollection(UIButton) NSArray *cursorButtons;
,容易勾起來在界面生成器:
+1,這個問題對於IBOutletCollection很有用 –
的確如果你想擁有一個管理按鈕的第三方對象。然而,如果你想讓按鈕本身知道它的類型/狀態(這是一個OO原則btw - >封裝),它不是一個好的解決方案。 –
@ValentinRadu該按鈕不在該抽象級別上運行。它關心圖像,標題,目標和行動。無論是數字按鈕還是平方根按鈕,或者您擁有什麼,都是控制器層真正關心的問題,並強制按鈕負責爲此將控制器邏輯移動到視圖中。 –
也許我誤解了你的問題,但tag
屬性肯定是通過XCode/Interface Builder爲UIButtons
設置的。
這是我沒有澄清_friendly_的含義。 「標籤」在IB中是絕對可以設置的,但它只是一個數字。我正在尋找一些直觀的選擇。例如,'color'怎麼樣? – ohho
可能是最清晰的方式來做到這一點和處理在同一小類的一切/類別是按上述使用User Defined Runtime Attributes
對於例如,你至少應該有一種方法:
-(void) setLocalizedKey:(NSString *) key;
//(NSString *) localizedKey; this is optional
或p roperty:
@property(nonatomic, strong) NSString * localizedKey;
申報和實施
(或@synthesize
)在UIButton
子類或類別,如果你看中了聯想引用(或者你不需要儲存或不能訪問類本身)。
在上面的示例中,該特定實例的值爲key
將爲HOW_IT_WORKS
。這是我通常處理本地化的方式,但也應該爲您的目的服務。
我用的按鈕'標題「屬性很多來編碼分組信息。如果您希望標題顯示在按鈕上,只需將按鈕連接到一個「IBOutletCollection」,然後遍歷每個標題以獲取相關的顯示和分組信息,並相應地解析字符串。 – msgambel