問題タブ [nspopupbuttoncell]
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.
objective-c - NSPopUpButtonCell の現在の選択を取得する方法は?
で を使用しNSPopUpButtonCell
ていNSTableView
ます。NSArray
ポップアップ ボタンには、によって提供されるプロパティへのバインディングがありますApplicationDelegate
。ポップアップ ボタンのメニュー項目を選択すると、現在の選択項目またはそのインデックスを取得することが期待されます。通知を受けるために IBAction を追加し、NSMenuDelegate
. どちらも常に index = 0 を返します。
上記の構成でサンプルプロジェクトを作成しました。うまくいけば、あなたは物事を明確にすることができます.
objective-c - setObjectValue:nil のみが呼び出されたときに NSPopUpButtonCell が正しく表示されるのはなぜですか?
AnNSTableView
には複数NSCell
の s があります (間接的に を介してNSTableColumn
)。NSCell は Flyweight デザイン パターンに従います。彼らはクッキーカッターです。列ごとに 1 つのセルがあり、行ごとに自分自身を描画するように求められます。 「これが値です。最初の行に描画します。これが 2 行目の値です。」 これは、セルごとにビュー インスタンスを持つビュー ベースのテーブルビューとは対照的です。
NSPopUpButtonCell をサブクラス化し、setXxxValue:
メソッドごとにメッセージを呼び出しNSLog();
てスーパー クラスに転送します。呼び出される唯一のメソッド (たとえば、新しい行を追加するとき、またはテーブルを更新するとき) はsetObjectValue:
. これはドキュメントから期待されています...しかしnull
、それに渡される唯一のものです!! 選択したアイテムのインデックスを含む NSNumber を渡す必要があります。
私のテーブルはうまく描画されます。 セルの動作を拡張/変更したいので、これを理解しようとしています(明らかに、そうでなければサブクラスは必要ありませんでした)。
質問:これはどのように可能ですか? 各行に正しい値を描画するために、NSPopUpButtonCell に値を設定する方法を教えてください。バインディングを考慮しても、重労働をしているのは NSTableColumn ですよね? 私は何が欠けていますか?
objective-c - NSPopUpButtonCell indexOfSelectedItem は常に 0 を返します
を含む各セルを持つ NSTableView がありNSPopUpButtonCell
ます。のアクションを、選択したインデックスを単純にチェックするメソッドに設定しNSPopUpButtonCell
ました (インデックスを保存してテーブルをリロードできるようにするため)。
何を選択しても、選択されたインデックスは 0 ではありませんが、0 であると表示されます。何が原因か知っていますか?
objective-c - NSAttributedString への NSPopupButton コンテンツ バインディング
NSArrayController
一連の列を含むテーブルを動的に作成していますが、そのうちの 1 つにポップアップ ボタンがあります。ポップアップ ボタン セルのコンテンツを使用するNSAttributedString
必要があるのは、科学変数を下付き文字 (たとえば、1 を下げた X1) で表示する必要があるためです。
ポップアップ セルcontent values
を配列にバインドすると、プレーンなオブジェクトNSAttributedString
しか理解できないため、UI が意味不明になります。NSString
ポップアップ ボタンのメニューはバインドできません (つまり、バインドを介して動的に割り当てることはできません)。
ポップアップ ボタン メニューのコンテンツも動的にバインドできません。
NSPopUpButtonCell
メニューにNSAttributedString
オブジェクトを動的に追加する方法 (少なくとも残りのテーブル コンテンツのバインディングに固執する) を誰かが提案できますか?
objective-c - カスタム NSPopUpButtonCell アウトレット/バインディング
NSPopUpButtonCell
テーブル ビューがバインディングとNSArrayController
.
ポップアップ ボタン セルは作成されますが、ポップアップ ボタン セルのsetMenuItem:item
メソッドをオーバーライドしてアウトレットにアクセスしようとすると、 nil
.
これは予想される動作ですか..?
作成時にメニューを置き換えるために別の方法を使用する必要がありますか?
NSWindowController
基本的に、そのドキュメント ウィンドウのコントローラー ( ) にリンクするアウトレットが必要ですNSPopUpButtonCell
。これにより、カスタム ポップアップ ボタンが表示されたときにメニューをカスタマイズすることができます。
バインディングを使用したソリューションはさらに優れていますが、オーバーライドsetObjectValue:
すると、パラメーターで呼び出されることは決してないことがわかります。ただしnil
、ストックを使用するNSPopUpButtonCell
と、適切に入力されたポップアップ メニューが表示されます。
( setObjectValue:nil のみが呼び出されたときに NSPopUpButtonCell が正しく表示される理由も参照してください)。
cocoa - NSPopupButtonのサイズを選択したタイトルに変更します
NSPopupButtonがあり、選択したタイトルに合わせてサイズを変更したいのですが。
[NSPopupButton sizeToFit]は、ポップアップが現在選択されているものではなく最大のタイトルアイテムにサイズ変更されているため、私のニーズに合いません。
私は成功せずにいくつかの方法で試しましたが、近いほど
しかし、定数値ARROW_WIDTHは、非常にダーティでエラーが発生しやすいソリューションです。
ステータスバーのTextWranglerエンコーディングコンボは必要なように機能します
macos - NSTableView で NSPopUpButtonCell の選択インデックスを設定する
インスタンスを使用して列に入力NSTableView
しNSPopUpButtonCell
ます (そのようなセルを IB の列にドラッグしただけです)。1 つのことを除いて、すべて正常に動作します。メニューNSPopUpButtonCell
で適切なインデックスを返すことによって、インスタンスの 1 つの選択された項目インデックスを設定しようとすると-tableView:objectValueForTableColumn:row:
、最初の項目が強調表示されます。そのメソッドで返される値を確認しましたが、正しい値です (したがって、常にゼロであるとは限りません)。
私は何か間違ったことをしていますか?
objective-c - NSTableView のカスタム NSPopupButtonCell
テーブルビューでカスタム ポップアップ メニューを作成しようとしています。私が理解しているように、[NSPopupButtonCell setView:myView] メソッドを呼び出してカスタム ビュー (NSOutlineView を含む NSView のみ) を渡すことで、これを行うことができるはずです。
そこで、NSPopupButtonCell サブクラスを作成し、初期化中に setView を呼び出して、カスタム アウトライン ビューを渡します。
編集
IB では、表の列セルをポップアップ ボタン セルに設定し、クラスをカスタム LookupPopupButtonCell に設定しました。
カスタム ビューはまだ表示されませんが、カスタム クラスの初期化メソッドが呼び出されているようです。
それ以来、このアプローチを NSTableViewDelegate メソッド dataCellForTableColumn の使用に置き換えました。これで、ポップアップにカスタム tableView が表示されます。
ただし、NSOutlineViewDelegate メソッドを呼び出すことにはまだ喜びはありません。
編集 OK ビューで NSPopupButton を使用して動作させることができました。デリゲートは検索を機能させ、テーブルビューは問題なく表示されます。NSPopupButtonCell を使用すると、デリゲート メソッドが呼び出されないようです。