2012-02-26 13 views
0

私は32個のチェックボックスとNSTextFieldがあるアプリケーションを作成しています。 ユーザがNSTextFieldをクリックすると、ボタンはこの番号のバイナリrappresentationを表す値を取る。 問題ありませんNSTextFieldの行動を「クリック」が、ボタンのために、私は32 NSButtonsの配列を宣言している受信:IBOutlet(NSButton)の配列を参照する

#import <Foundation/Foundation.h> 


@interface Handler : NSObject 
{ 
    @private 
    IBOutlet NSTextField* textField; 
    IBOutlet NSButton* bits[32];  // here are the buttons 
} 

- (void)awakeFromNib; 
- (void) setTextField : (int) value; 
- (int) getTextField; 
@end 

しかし、私はIBOutlet「ビット」でチェックボックスをリンクしようとすると、Iを各メンバーのためにそれをすることはできません。 NSButtonへの32個のポインタの配列を1つのボックスにしか作成できません。 私も画像を表示:

Interface builder

これは私にとっては問題ですが、私は手動で32人の異なる名前で32種類のコンセントを宣言しなければなりませんか?

+1

は(彼らは共通の機能を果たすという意味)関連するすべてのチェックボックスはありますか?そうであれば、おそらくNSMatrixオブジェクトを使用しようとしています。そこでは、タグ番号を使用して各オブジェクトにアクセスできます。 –

答えて

1

これはNSMatrixオブジェクトを使用する良い例です。

インターフェイスにボタンを1つ追加し、Xcode 4で選択したボタンを使用して、[エディタ]> [埋め込み]> [マトリックス]に移動します。次に、ボタンの角をドラッグしてマトリックスに展開することもできます。

NSMatrixでは、特定のタグを検索するか、列/行の座標を検索してセルの値を取得できます。

HOW TO: 1)NSButtonオブジェクトを埋め込む:

Creating a button matrix

2)ボタンの角のいずれかが行列拡大するオプション-ドラッグ:あなたは

enter image description here

+0

それはうまくいかなかった、または私は何かを間違えた。 –

+0

@RamyAlZuhouri私の更新された投稿をチェックしてください、それはあなたのために働くはずです。 –

3

を32種類の参照を使用する必要はありません。IBOutletIBOutletCollectionを宣言することができます。

@property (retain, nonatomic) IBOutletCollection(NSButton) NSArray *buttons; 

これを使用してすべてをリンクします。ボタンの順序は実行時に決定的ではないことに注意してください。つまり、アプリケーションの実行中にボタンが特定の順序になることは保証できません。

+0

これはiOS専用機能ではありませんか? –

+0

私はあなたが正しいと思うルーカス、私はそれを試したと私はこのエラーがある: _expected ';'宣言リストの最後に_ しかし、 ';'すでに宣言の終わりです。 –

0

私はそれをマトリックスに拡張しました。しかし、グラフィカルには1つのボタンのように見えます。
これは私が得るものです:

enter image description here

enter image description here

+0

これを行列に埋め込んだら、ボタンの任意の角からドラッグするオプションが必要になります。これにより、より多くのチェックボックスが作成されます。 –