4

約50個のキーがあるカスタムキーボードを作成していUIButtonます。数字、アルファベット、カーソルなど、各キーのグループ化情報をいくつか入れたいと思います。

最初に頭に浮かぶのは、tagフィールドを使用することです(アルファベットの場合は100、数字の場合は200など)。

別のオプションは、連想参照を含むカテゴリを使用することです。

ただし、どちらの方法もInterfaceBuilderにあまり適していません。他のオプションはありますか?

4

3 に答える 3

6

あなたが書いた

数字、アルファベット、カーソルなど、各キーのグループ化情報をいくつか入れたいと思います。

sを使ってみませんIBOutletCollectionか?

「数字、アルファベット、カーソル」ごとに配列を宣言できます。

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

そして、それらをInterfaceBuilderに簡単に接続します。

ここに画像の説明を入力してください

于 2013-01-21T02:41:39.107 に答える
3

おそらく、それを実行し、同じサブクラス/カテゴリ内のすべてを処理するための最もクリーンな方法は、を使用することです。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これは私が通常ローカリゼーションを処理する方法ですが、あなたの目的にも役立つはずです。

于 2013-01-21T02:32:19.183 に答える
0

おそらく私はあなたの質問を誤解していますが、tagプロパティはUIButtonsXCode /InterfaceBuilderを介して確実に設定可能です。

ここに画像の説明を入力してください

于 2013-01-21T02:01:04.383 に答える