私はawakeFromNib
メソッドで記入するNSArrayControllerを持っています。データは、id
,name
およびdescription
のキーを有する。私は、NSArrayControllerにバインドされたComboBoxとTextFieldをIDの名前と2番目のIDで最初にバインドしました。私がComboBoxで選択を変更した場合は、TextFieldの値を変更したい、その逆の場合もあります。私はTextFieldとComboBoxバインディングのドキュメントを読んでいましたが、これを達成する方法を理解できませんでした。バインディングを持つNSComboBoxとNSTextField
1
A
答えて
1
NSComboBoxの値を入力するにはどこか別のが必要です。 NSArrayControllerはNSComboBoxに在庫値を提供するのには問題ありませんが、NSArrayControllerのcontentArrayにないかもしれないNSComboBoxに任意の値を入力することができます。
@interface SOAppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
// The NSArrayController you were talking about...
@property (assign) IBOutlet NSArrayController* popupValues;
// The other place to store data...
@property (retain) id comboBoxValue;
@end
を次に実装に:私はちょうどこのようAppDelegateに単純な値を置くことで、すぐにモックアップすることができました
@implementation SOAppDelegate
@synthesize window = _window;
@synthesize comboBoxValue = _comboBoxValue;
- (void)dealloc
{
[_comboBoxValue release];
_comboBoxValue = nil;
[super dealloc];
}
-(void)awakeFromNib
{
[super awakeFromNib];
NSMutableDictionary* item1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithUnsignedInteger: 1], @"id",
@"Item 1 Name", @"name",
@"Item 1 Description", @"description",
nil];
NSMutableDictionary* item2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithUnsignedInteger: 2], @"id",
@"Item 2 Name", @"name",
@"Item 2 Description", @"description",
nil];
NSMutableDictionary* item3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithUnsignedInteger:3], @"id",
@"Item 3 Name", @"name",
@"Item 3 Description", @"description",
nil];
NSMutableArray* array = [NSMutableArray arrayWithObjects: item1, item2, item3, nil];
self.popupValues.content = array;
}
@end
その後バインディングのために、私はこのようにそれを設定しました:
NSComboBox:
- コンテンツ - >アレイController.arrangedObjects
- コンテンツ値 - >アレイController.arrangedObjects.name
- 値 - >アプリケーションDelegate.comboBoxValue(あなたがNSComboBoxに入力しているようNSTextFieldは、文字ごとに文字を更新する場合は
Continuously Updates Value
を確認してください)
NSTextField:
- 値 - >アプリケーションDelegate.comboBoxValue(あなたがNSTextFieldに入力しているようNSComboBoxは文字ごとの文字を更新する場合は
Continuously Updates Value
を確認してください)
あなたが入力した新しい値を配列に追加したい場合は、この2つのコントロールとバインディングだけでは簡単には実行できません。それはかなり複雑です。しかし、単純なケースのトリックは、NSComboBoxにあらかじめロードされた値を提供するために使用しているNSArrayControllerよりも、以外のの値を格納する場所が必要なことです。
関連する問題
- 1. NSTextFieldとNSComboBoxはライオンで別々に描画されます
- 2. ボタンコントロールのバインディングを持つusercontrol
- 3. Boost ::継承を持つクラスのPythonバインディング
- 4. Visifire - 複数のバインディングを持つカスタムツールチップ
- 5. NSAlertへのNSComboBox
- 6. WPFバインディング:!私はボタン持つ値
- 7. NSTextfield + NSMenuとファーストレスポンダ
- 8. NSStatusItem with NSPopoverとNSTextField
- 9. JAXBバインディングをカスタマイズする - 私は、次のスキーマを持つスキーマ
- 10. Javaの静的バインディングと動的バインディングについて
- 11. NSTextField Scroll
- 12. NSTextFieldオートコンプリート
- 13. NSTextFieldクリアボタン
- 14. NSComboBoxボタンを隠す/無効にする
- 15. NSComboBoxをNSArrayControllerにプログラムでバインドする
- 16. NSComboBoxにテキストと値を追加するには?
- 17. NSToolbarのNSComboBoxでデータソースとデリゲートにメッセージを送信する方法
- 18. WPF ComboBox XMLバインディングとViewModelバインディング?
- 19. NSTextfieldのkeydowneventをオーバーライド
- 20. NSTextFieldのクリックスルー?
- 21. Cocoa NSTextField行間
- 22. NSTextField垂直アライメント
- 23. NSTextField on Dark NSVisualEffectView
- 24. NSTextField nextKeyViewが
- 25. NSTextField to uint16_t
- 26. リストプロパティを持つモデルへのMVCバインディングは他のプロパティを無視します
- 27. NSTextFieldのスペル候補
- 28. NSTextFieldのオートコンプリート方法
- 29. 角の丸いNSTextField?
- 30. フォーカスされているNSTextfieldを見つける方法
私の意見では、この提案は問題を解決しません。質問:「私はComboBoxとTextFieldをNSArrayControllerにバインドしています。最初に名前を付け、2番目にidを付けます。ComboBoxで選択を変更すると、TextFieldの値を変更したい、その逆。 問題はnscomboboxの "name"のような値を選択し、NSTextViewに相対IDを表示することです。あなたの答えに続いて、nstextviewはコンボボックスにあるものとまったく同じものを表示します。 2回同じデータを入力します。 – sundsx