2013-01-18 42 views
4

我正在構建一個自定義鍵盤,其中有大約50個UIButton鍵。我想放些分組信息爲每個鍵,例如,數字,字母,光標等如何通過Interface Builder在UIButton中保存輔助信息?

的第一件事想到的是由tag場的平均(100爲字母,200號,...等)

另一種選擇是通過a category with Associative References

但是,這兩種方法都不是很好Interface Builder友好的。還有其他選擇嗎?

+1

我用的按鈕'標題「屬性很多來編碼分組信息。如果您希望標題顯示在按鈕上,只需將按鈕連接到一個「IBOutletCollection」,然後遍歷每個標題以獲取相關的顯示和分組信息,並相應地解析字符串。 – msgambel

回答

6

你寫

我想放些分組信息爲每個鍵,例如,數字,字母,光標等

爲什麼不使用IBOutletCollection S'

您可以爲每一個 「數字,字母,光標」 聲明數組:

@property (nonatomic) IBOutletCollection(UIButton) NSArray *numberButtons; 
@property (nonatomic) IBOutletCollection(UIButton) NSArray *letterButtons; 
@property (nonatomic) IBOutletCollection(UIButton) NSArray *cursorButtons; 

,容易勾起來在界面生成器:

enter image description here

+0

+1,這個問題對於IBOutletCollection很有用 –

+0

的確如果你想擁有一個管理按鈕的第三方對象。然而,如果你想讓按鈕本身知道它的類型/狀態(這是一個OO原則btw - >封裝),它不是一個好的解決方案。 –

+1

@ValentinRadu該按鈕不在該抽象級別上運行。它關心圖像,標題,目標和行動。無論是數字按鈕還是平方根按鈕,或者您擁有什麼,都是控制器層真正關心的問題,並強制按鈕負責爲此將控制器邏輯移動到視圖中。 –

0

也許我誤解了你的問題,但tag屬性肯定是通過XCode/Interface Builder爲UIButtons設置的。

enter image description here

+0

這是我沒有澄清_friendly_的含義。 「標籤」在IB中是絕對可以設置的,但它只是一個數字。我正在尋找一些直觀的選擇。例如,'color'怎麼樣? – ohho

3

可能是最清晰的方式來做到這一點處理在同一小類的一切/類別是按上述使用User Defined Runtime Attributes

enter image description here

對於例如,你至少應該有一種方法:

-(void) setLocalizedKey:(NSString *) key; 
//(NSString *) localizedKey; this is optional 

或p roperty:

@property(nonatomic, strong) NSString * localizedKey; 
申報和實施

(或@synthesize)在UIButton子類或類別,如果你看中了聯想引用(或者你不需要儲存或不能訪問類本身)。

在上面的示例中,該特定實例的值爲key將爲HOW_IT_WORKS。這是我通常處理本地化的方式,但也應該爲您的目的服務。

相關問題