私は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. バインディングはNSTextFieldを更新しません
- 3. ボタンコントロールのバインディングを持つusercontrol
- 4. 2つのプロパティを持つMvxAutoCompleteTextViewバインディング
- 5. NSAlertへのNSComboBox
- 6. ノックアウトjsバインディング問題を持つCkseditor
- 7. バインディングを持つTypeScriptの角1.5のコンポーネント
- 8. Boost ::継承を持つクラスのPythonバインディング
- 9. Visifire - 複数のバインディングを持つカスタムツールチップ
- 10. NSTextfield + NSMenuとファーストレスポンダ
- 11. WPFバインディング:!私はボタン持つ値
- 12. NSStatusItem with NSPopoverとNSTextField
- 13. NSComboBoxエントリの事前選択
- 14. NSTextFieldは
- 15. NSTextFieldオートコンプリート
- 16. NSTextField Scroll
- 17. NSTextFieldクリアボタン
- 18. 多くのバインディングを持つ巨大なビュー内の欠陥のあるバインディングを見つけるには?
- 19. JAXBバインディングをカスタマイズする - 私は、次のスキーマを持つスキーマ
- 20. falseを返す関数を持つCSSバインディング
- 21. NSComboBoxボタンを隠す/無効にする
- 22. NSComboBoxをNSArrayControllerにプログラムでバインドする
- 23. Javaの静的バインディングと動的バインディングについて
- 24. オブジェクト内のネストされたプロパティを持つ2ウェイ・バインディング。 (VueJS + VueX)
- 25. 角2:大きな行のデータを持つUIバインディング
- 26. デフォルトのテキストと双方向の値のバインディングを持つノックアウトバウンドの選択ドロップダウン
- 27. NSTextfieldのkeydowneventをオーバーライド
- 28. NSComboBoxにテキストと値を追加するには?
- 29. NSToolbarのNSComboBoxでデータソースとデリゲートにメッセージを送信する方法
- 30. Cocoa NSTextField行間
私の意見では、この提案は問題を解決しません。質問:「私はComboBoxとTextFieldをNSArrayControllerにバインドしています。最初に名前を付け、2番目にidを付けます。ComboBoxで選択を変更すると、TextFieldの値を変更したい、その逆。 問題はnscomboboxの "name"のような値を選択し、NSTextViewに相対IDを表示することです。あなたの答えに続いて、nstextviewはコンボボックスにあるものとまったく同じものを表示します。 2回同じデータを入力します。 – sundsx