問題タブ [nssearchfield]
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 - 2 つの垂直ヘッダーを持つ NSTableview
私はこのようなことを達成しようとしています:
ビューベースの NSTableview を取得しました。このテーブルビューに検索結果を表示したいと思います。しかし、Web の検索結果とローカル ライブラリの検索結果を別々に表示する必要があります。それで、NSTableviewで2つのヘッダーを垂直に整列させる方法を知りたいですか、それとも表示された画像で何か別のものを使用していますか?
ありがとう
objective-c - 動的検索用の NSSearchField と tableview
IOS アプリを OSX に移植しようとしています。
私の IOS アプリには、UISearchBar があります。ユーザーが文字を入力しているときに、HTTP 要求を送信して、ユーザー入力に基づいてサーバーからデータを抽出し、テーブルビューのコンテンツを更新します。次に、ユーザーは、探していた正しい行をテーブルビューで選択できます。
OSX でも同じメカニズムが必要です。これは、Maverick のマップ アプリの検索テキスト フィールドに似ています。
私のOSXアプリにはNSSearchFieldがあり、ユーザーが入力しているときにHTTPリクエストを送信してサーバーからデータを抽出できますが、「テーブルビュー」をNSSearchFieldに関連付けて結果を表示するにはどうすればよいですか?
ウィンドウの NSToolbar に NSSearchField があり、Map App のように、検索結果を下のリストに表示したいと思います。
objective-c - リストを検索フィールドに動的に追加する方法は?
検索フィールドをクリックしたときのような機能を実装したいのですが、検索フィールドの下に基準のリストを表示する必要があります。検索する必要がある基準に基づいています。このリストを検索フィールドに追加するにはどうすればよいですか。前もって感謝します。
objective-c - メニューが更新されていない NSSearchField
私はドキュメント ベースのアプリケーションを持っています。ドキュメント ビューには NSSearchField があります。検索フィールドで、表示されるメニューを有効にし、アクションをメニュー項目に関連付けました。メニューの一つに「マッチケース」があります。このメニュー項目の隣にチェックを入れたり (そして外したり) できるようにしたいです。そうしようとすると、メニューにチェックが表示されません。
コードが実行され、状態が 0 から 1 から 0 から 1 に変化することを示すログ メッセージが表示されます。しかし、メニュー項目の横にチェックはありません。デバッグ中にメニュー項目オブジェクトを見ると、切り替える前に「状態」値が 0 と 1 に設定されていることがわかります。
私が欠けているものに関する提案はありますか?
macos - 1 つの NSSearchField のテキストを 2 つの異なるコントローラー オブジェクトにバインドする
2 つの異なる NSArrayController がありますが、1 つの検索フィールドのテキストを使用して両方をフィルタリングしたいと考えています。述語は、コントローラーごとに異なります。出来ますか?現時点では、一度に 1 つのアレイ コントローラーのみをフィルター処理することができます。
cocoa - NSTextView + NSTextFinder + 私の別の NSSearchField
カスタム NSSearchField からの検索クエリを使用して NSTextView で検索を実装しようとしています。
かなり単純に聞こえますが、機能させることができません。
これまでのところNSTextFinder
、 、そのクライアント、および FindBarContainer に関するすべての Apple ドキュメントに目を通しました。TextFinder はコンテナに FindBarView を提供するだけで、コンテナは検索を有効にするとそれを表示します。
クライアント、コンテナー、および TextFinder 間のすべての通信は非表示になります。カスタマイズや干渉なしで「そのまま」動作するように設計されたブラックボックスのように見えます。
しかし- (void)performAction:(NSTextFinderAction)op
、NSTextFinder のメソッドはどうでしょうか。カスタム コマンドを TextFinder に送信するためではないでしょうか。
次のように新しい検索文字列を割り当てようとしていました。
しかし、それは機能せず、通常の findBar 操作を単に中断します。
私は何か間違ったことをしているという強い気持ちがあります。私が望むのは、自分の NSSearchField に標準の検索機能を持たせることだけです。それは可能ですか?
通常の findBar に満足していない人は私が初めてではないはずです。
あなたの助けは非常に必要であり、感謝しています!
objective-c - フィルター処理された NSTableView から選択したセルの値を一貫して取得するにはどうすればよいですか?
環境
NSArrayController によって管理される 2 列のセル ベースの NSTableView があります。
- 最初の列には、値が有効かどうかを示すチェックボックスが表示されます。
- 2 番目の列は要素の名前を表します。
ビューは NSSearchField にリンクされているため、検索文字列を列 2 の文字列と比較する述語に基づいてフィルター処理されます。
ビューは正しく表示され、検索文字列が変更されたときに意図したとおりにフィルタリングされます。
要件
ユーザーが最大 5 行を有効にできるようにする必要があります。これを達成するために、バッキング アレイの変更を監視し、有効なエントリの量を追跡しています。カウントが 5 を超えた場合は、アラートでユーザーに通知し、選択された行インデックスを取得してバッキング アレイでそのインデックスを無効にすることで、以前に有効にしたエントリの選択を解除します。[willChange.. ..didChange] KVO ブロックでこれを行います。
これは、ビューがソートされていない場合は意図したとおりに機能しますが、選択された行が配列内の適切なインデックスに対応していないため、明らかに問題が発生します。
したがって、次のコードを使用して、ビューがフィルター処理されている場合 (検索文字列が空でない場合) に、選択したセルの文字列値を取得します。次に、配列をトラバースし、文字列に一致するエントリを無効にします。
問題
選択された行は常に正確ですが、代表セルから値を取得することは正確ではありません。最初は返された値が正しいように見えますが、他の行を選択すると、選択したインデックスがまだ正しい場合でも、次の行からデータが返されます。また、ビューのいくつかの行から値を返すことも確認しました。
アップデート
さらにテストした結果、初めてフィルターを適用すると機能するように見えますが、別の文字列によるフィルター処理では、その特定のフィルターで最初に選択されたセルのセル値が保持されます。
すなわち:
- ウィンドウを読み込んで6つのアイテムを選択
- 6 番目のアイテムの選択が解除され、ユーザーに警告されました
- フィルターを適用
- 新しい6番目のアイテムを選択してください
- 6 番目のアイテムの選択が解除され、ユーザーに警告されました
- 同じフィルターで別の 6 番目のアイテムを選択してください
- 6 番目のアイテムの選択が解除され、ユーザーに警告されました
- 新しいフィルタを入力してください
- 新しい6番目のアイテムを選択してください
- 6 番目のアイテムの選択が解除され、ユーザーに警告されました
- 同じフィルターから新しい 6 番目のアイテムを選択
- 選択したインデックスは正しいですが、選択した行の値は前の選択と同じです
- 正しいエントリが選択解除されていないため、ユーザーは繰り返し警告を受け、6 つのエントリが永続的に選択されました。
ただし、以前に選択されたアイテムではなく、次の行の値が返される場合もあります。
質問
私の質問は次のとおりです。
- フィルター処理されたリストに対して正しい方法で選択された行を取得していますか?
- リストがソートされている場合でも、選択した行に基づいて列 2 の文字列値を一貫して取得するにはどうすればよいですか?
お時間をいただきありがとうございます。
解決
セルを取得するコードを次のように変更して、これを解決しました。
に: