問題タブ [nspopupbutton]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - ビューベースの NSTableView の NSPopupButton: バインディングを機能させる
問題の説明
私は、単純でかなり一般的であるべき何かを達成しようとしています: バインディングに NSPopupButton を設定し、バインディングに NSTableView を設定します。Apple は、ポップアップ メニューを使用した対 1 関係の実装のドキュメントで、セル ベースのテーブルについてこれを説明しており、次のようになっています。
ビューベースのテーブルでこれを機能させることはできません。「作成者」ポップアップは、何をしても表示されません。
テーブル内の項目 ( Items ) 用と作成者 ( Authors ) 用の 2 つの配列コントローラーがあり、どちらもコア データ モデルのそれぞれのエンティティに関連付けられています。インターフェイスビルダーで次のように、セルに NSManagedPopup をバインドします。
- コンテンツ->作成者(コントローラー キー: ArrangeObjects )
- コンテンツ値->作成者(コントローラー キー: ArrangeObjects、モデル キー パス: name )
- 選択したオブジェクト->テーブル セル ビュー(モデル キー パス: objectValue.author
ポップアップをテーブルの外のどこかに配置すると、正常に動作するので (明らかに選択を除いて)、バインディングのセットアップは問題ないと思います。
私がすでに試したこと
誰かがIBOutlet プロパティをAuthors配列コントローラーに使用する回避策を提案しましたが、これも私にはうまくいかないようです。
別のSOの質問では、NSTableCellViewをサブクラス化し、必要な接続をプログラムで確立することが提案されました。私はこれを試しましたが、限られた成功しかありませんでした。
次のようにバインディングをセットアップすると:
ポップアップには可能な作成者のリストが表示されますが、現在の選択は常に「値なし」と表示されます。追加すると
現在の選択は完全に空です。現在の選択を表示する唯一の方法は、設定することです
プロパティに を割り当てようとするため、別の作成者を選択するとすぐに壊れ
NSString*
ますAuthor*
。
何か案は?
cocoa - NSPopupButton に Core Data Entity とメニュー項目を設定する
コア データ エンティティのリストを NSPopupButton に配置し、さらにそこにメニュー項目を配置する方法はありますか?
Person と Car という 2 つのコア データ エンティティがあります。人は多くの車 (関係) を持っています。シート上で、ユーザーは人物のポップアップ ボタンから車を選択できる必要があります。このポップアップ ボタンは、新しい車を作成するオプションも提供する必要があります。これは、その人のために選択されます。
これまでの私の試み:
IB の NSPopupButton に入れたアイテムは、ポップアップがコア データから読み込まれるときに実行時に表示されません。
ユーザーがポップアップからアイテムを選択したときに呼び出されるアクションを指定できますが、それはすべてのアイテムに対してトリガーされます。(必要なシートをトリガーするためだけに、コア データ エンティティにダミー エントリが必要でした。また、ポップアップ内のそのダミー項目の位置を制御することもできません)
objective-c - NSPopUpButtonにfirstResponderステータスを受け入れさせるにはどうすればよいですか?
のNSPopUpButton
単純なサブクラスもありNSPopUpButton
ます。サブクラスには次のものがあります。
- (BOOL)acceptsFirstResponder { return YES; }
- (BOOL)refusesFirstResponder { return NO; }
これで、ボタンをファーストレスポンダーにするようにウィンドウに指示するのは簡単で、起動時に機能しますが、NSTextFieldからタブで移動してnextResponderとしても発生する必要があります。NSTextFieldにフォーカスが移ると、ポップアップボタンに戻ることができないように見えます。
ここで何が欠けていますか?本当にシンプルなはずです。
回答:firstResponderはここで使用するものではありません。サブクラスが必要であり(私が推測したように)、YESを返すには以下をオーバーライドする必要があります:(
- (BOOL)canBecomeKeyView { return YES; }
Peter Hoseyに感謝)
runtime-error - プログラムで定義された NSPopUpButton をクリックするとエラーが発生する
このエラーは特定の回数だけ発生します (新しいドキュメントを作成した後)。保存して再度開くと、機能します。何か案が?誰かが同じエラーを起こしましたか?
ありがとう!
objective-c - NSPopupButton のデフォルトの状態とバインディング
コンテンツ/値の配列コントローラーに関連付けられた NSPopupButton があり、ビューコントローラーのプロパティに関連付けられていました..すべて正常に機能していました。次に、共有ユーザーのデフォルトにあるポップアップのデフォルト値が必要でした..これはすべてがうまくいかないところです! 「選択した値」を変更して、ユーザーのデフォルトのモデルキーパスを持つようにすると、ローカルプロパティへのバインディングが削除されました。また、私が望まないデフォルトを変更します (これは [設定] ウィンドウで行います)。
今のところ、ポップアップから NSString によって必要な mnaged オブジェクトを検索するコードでそれを回避しました :[[_qualifierPopup selectedCell] title]... しかし、これは非常に不格好です!
だから2つの質問:
- NSPopupbutton のデフォルト状態を共有ユーザー デフォルトで設定できますか?
- ポップアップがユーザーのデフォルトにバインドされる前に、正しい管理オブジェクトを返すタイプ id のプロパティにバインドされていたことを考慮して、ポップアップから文字列ではなく同じ ID を取得し、その文字列を検索できますか? もしそうなら、誰かが構文を手伝ってくれます。
ありがとうイアン
objective-c - バインディングを使用した NSTableView の NSPopupButton
私たちの多くが、特にネストされたバインドなど、同じバインドの問題を抱えていることを願っています。
シナリオ :
プロパティを持つクラス Person がname
ありrole
ます。役割は他のソースから取得されます。
人物クラス:
AppDelegate クラス:
テーブルビューとポップアップボタンがあります。TableView は ArrayController にバインドされます。
popupbutton をロールにバインドして、選択した値がオブジェクトまたは Person、つまりモデルで更新されるようにする方法は?
objective-c - ライブ フォント (スタイル付きテキスト) を使用した NSPopupButton
popupbutton コントロール ( NSPopupButton )でライブ フォントを表示することは可能でしょうか? 現在、次の方法で使用可能なフォントのリストを含む popupbutton をロードします。
たぶん、NSMutableAttributedString を使用して、次のようなものですか?
範囲外のエラーが発生します。私のアプローチが正しいかどうかはわかりません。popupbutton コントロールがスタイル付きテキストをサポートしているかどうかさえわかりません。
ご協力ありがとうございました。
objective-c - NSUserDefaults を使用して NSPopupbutton から選択したアイテムを保存する
いろいろやってみたのですが、うまく動かない...
うまくいかない、何か提案はありますか?
macos - 選択した項目を NSPopUpButton から取得するにはどうすればよいですか?
このコードのコンパイルは成功しましたが、「項目 1」を選択したにもかかわらず、「失敗しました」というメッセージが表示されました。
私の間違いは「myPopUpのselectedItem」だと思いますが、修正方法がわかりません。
選択した項目を NSPopUpButton から取得するにはどうすればよいですか?