約50個のキーがあるカスタムキーボードを作成していUIButton
ます。数字、アルファベット、カーソルなど、各キーのグループ化情報をいくつか入れたいと思います。
最初に頭に浮かぶのは、tag
フィールドを使用することです(アルファベットの場合は100、数字の場合は200など)。
別のオプションは、連想参照を含むカテゴリを使用することです。
ただし、どちらの方法もInterfaceBuilderにあまり適していません。他のオプションはありますか?
約50個のキーがあるカスタムキーボードを作成していUIButton
ます。数字、アルファベット、カーソルなど、各キーのグループ化情報をいくつか入れたいと思います。
最初に頭に浮かぶのは、tag
フィールドを使用することです(アルファベットの場合は100、数字の場合は200など)。
別のオプションは、連想参照を含むカテゴリを使用することです。
ただし、どちらの方法もInterfaceBuilderにあまり適していません。他のオプションはありますか?
あなたが書いた
数字、アルファベット、カーソルなど、各キーのグループ化情報をいくつか入れたいと思います。
sを使ってみませんIBOutletCollection
か?
「数字、アルファベット、カーソル」ごとに配列を宣言できます。
@property (nonatomic) IBOutletCollection(UIButton) NSArray *numberButtons;
@property (nonatomic) IBOutletCollection(UIButton) NSArray *letterButtons;
@property (nonatomic) IBOutletCollection(UIButton) NSArray *cursorButtons;
そして、それらをInterfaceBuilderに簡単に接続します。
おそらく、それを実行し、同じサブクラス/カテゴリ内のすべてを処理するための最もクリーンな方法は、を使用することです。User Defined Runtime Attributes
上記の例では、少なくとも1つの方法が必要です。
-(void) setLocalizedKey:(NSString *) key;
//(NSString *) localizedKey; this is optional
またはプロパティ:
@property(nonatomic, strong) NSString * localizedKey;
連想参照が必要な場合(またはストレージが不要であるか、クラス自体にアクセスできない場合)、サブクラスまたはカテゴリで宣言および実装(または@synthesize
)されます。UIButton
上記の例では、の値はその特定のインスタンスに対するものkey
になります。HOW_IT_WORKS
これは私が通常ローカリゼーションを処理する方法ですが、あなたの目的にも役立つはずです。
おそらく私はあなたの質問を誤解していますが、tag
プロパティはUIButtons
XCode /InterfaceBuilderを介して確実に設定可能です。