問題タブ [cocoa-bindings]
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 - コア データ モデルに NSImage を格納する
Core Data Model に NSImage を保存する正しい方法は何ですか? Entity に Attribute を追加し、それに Type "Binary" を指定すると機能すると想定しましたが、機能していません。NSImageCells の列を持つテーブルがありますが、何も表示されません。
cocoa - カスタム NSView のバインド: IBPlugin の作成が必要ですか?
画像をパターンとして描画するために、NSView のサブクラスを作成しました。
バインディングを公開するために次を実装しました。
残念ながら、イメージバインディングは Interface Builder に表示されません。
Interface Builder でバインディングを公開するには、本当に IBPlugin を作成する必要がありますか? これは、再利用する予定のないカスタム ビューにはやり過ぎのように思えます。
cocoa - 計算値に基づく計算値の KVO の設定
したがって、Invoice と InvoiceLineItem の 2 つのオブジェクトがあります。InvoiceLineItem には と呼ばれるプロパティがcost
あり、他のプロパティに基づいて動的に作成されます。私が使用するKVO /バインディングを支援するには:
これはうまくいきます。serivceCost のようなプロパティを編集すると、テーブル ビューのメイン コストが正常に更新されます。
Invoice オブジェクトには、InvoiceLineItems の NSMutableArray があります。Invoice には と呼ばれる同様のプロパティがありますtotalCost
。これは、明細項目を繰り返し処理することによって計算され、明細項目が削除済みとしてマークされていない限り (同期の理由でこれを行っています)、コストを合計して totalCost を作成します。
今私の質問/問題。項目のコストの 1 つが変更されたときに KVO/バインディングで機能するように、Invoice の totalCost を設定するにはどうすればよいですか?
設定してみました:
しかし、うまくいきません。コンソールに次のエラーが表示されます。[<NSCFArray 0x1499ff40> addObserver:forKeyPath:options:context:] is not supported. Key path: cost
cocoa - NSTableView と NSOutlineView のドラッグ アンド ドロップ
私は NSTableView と NSOutlineView を持っています。どちらもバインディングによって提供されるコンテンツを持ち、ドラッグ アンド ドロップ機能が必要です。
テーブル Aからアウトライン B の行に行をドラッグすると、アウトライン B の行が表すデータ構造にコピーされます。
行をアウトライン Bからアウトライン B の別の行にドラッグします。これにより、最初の行で表されるデータが 2 番目の行で表されるデータにコピーされます。
私はApple のドラッグ アンド ドロップに関するドキュメントを読んだことがありますが、どこにも行き着きませんでした。私がしなければならないことに実際には当てはまらないようです。私は何が欠けていますか?
cocoa - アレイコントローラーの特定のアイテムにバインドするCocoa
の値を配列内の特定のアイテムにNSArrayController
バインドするためにを使用することは可能ですか?NSTextField
特に、配列の最初の項目のプロパティにバインドし、配列が空の場合は何も表示しないようにします。
shows just "("を使用arrangedObjects.command
すると、アイテムごとにカンマ区切りの文字列を含む複数行の文字列を表示しようとしている可能性があります。最初の文字列が必要です。
objective-c - プログラムでバインドされた NSMutableArray にオブジェクトを追加する方法は?
次の構造を持つ NSDocument があります。
MyDocument.xib で NSArrayController と MyView をインスタンス化し、ファイルの所有者 (MyDocument) への接続を確立したので、Interface Builder の観点から、すべてが正しく行われたと確信しています。
MyView のインターフェースはシンプルです。
今、MyDocument windowControllerDidLoadNib
私は次のコードを持っています:
デバッガーで、それmyViewArray
が NSControllerArrayProxy であることを確認したので、プログラムによるバインドが正しいように見えます。ただし、 MyView のメソッドのオブジェクトを MyView に追加しようとすると、 MyDocumentmyViewArray
のmyArray
. 次の両方のアプローチを試しました。
(2 番目のアプローチでは、予想どおりコンパイラ エラーが発生しますが、KVO に関する私の限られた理解により、Objective-C ランタイムはこのメソッドを「実装」すると考えていました。)
更新しようとしている方法に何か問題がありますmyViewArray
か? プログラムによるバインドに何か問題がありますか? (MyView はカスタム ビューであり、IB パレットを作成したくないため、プログラムでこれを実行しようとしています。)
objective-c - 独自の (共有ではない) NSUserDefaults オブジェクトを使用した KVO およびバインディングの問題
アプリケーションで NSUserDefaults をサブクラス化しています。これの副作用は[NSUserDefaults sharedUserDefaults]
、 を使用できないことです。独自の静的デフォルト オブジェクトを提供するクラス メソッドが必要です。これはコードの問題ではありませんが、バインディングを使用して設定 UI を接続しているため、難しいことがわかりました。
共有された NSUserDefaultsController は共有されたデフォルトを使用するので、それはありません。代わりに、ウィンドウ コントローラーに独自のデフォルト コントローラーを作成し、それに静的なデフォルト オブジェクトを提供して、それにバインディングを接続することができます。ただし、これは完全には機能しません。デフォルト オブジェクトで KVO を使用しようとしたときに、変更通知を受け取りませんでした。通常の NSUserDefaults オブジェクト (サブクラスではない) を使用してこれを再試行しましたが、KVO 通知はありませんでした。共有デフォルト オブジェクトを代用すると、KVO は私の期待どおりに機能します。
共有デフォルトを使用していないときにバインディングと KVO を機能させる方法について、誰かアイデアはありますか?
cocoa - CocoaのBindingsを使用して、編集可能なNSTableViewをNSMutableArrayに接続することは可能ですか?
私がこすり合わせることができる断片から、これに対する答えは「いいえ」になるように思われるので、私が打ち込もうとしている(おそらく)場合に私が達成しようとしていることを大まかに説明しますネジ。
私のアプリにあるのは、読み込むことができる有効なファイル拡張子のリストです。これは、ディレクトリを介して繰り返し使用されます。これを好みにしたいので、次のようにします。
そして、NSTableViewをSharedUserDefaultsコントローラーにバインドされているNSArrayControllerにバインドしています...
これは、ユーザーがカスタマイズ可能な有効な拡張機能のリストを作成するための完全に間違ったアプローチですか?NSUserDefaultsの役割を誤解しましたか?
objective-c - NSTableView が入力された後の行の自動選択を無効にする
バインディングを使用してリンクされた Core Data が取り込まれた 2 つの NSTableView があります。NSTableView1 で行が選択されると、NSTableView2 が設定され、その最初の行が選択されます。NSTableView2 に対応する NSArrayController をその selectionIndex に KVO で登録しました。これは、NSTableView2 で行が選択されたときにメソッドが実行されるようにするためです。私の問題は、NSTableView1 で行が選択されると、NSTableView2 の最初の行が選択され、メソッドがトリガーされることです。NSTableView2 で行を自動的に選択することなく、NSTableView1 で行を選択して NSTableView2 に入力できるようにしたいと思います。これはどのように達成されますか?
objective-c - 配列コントローラーで述語を使用して関連オブジェクトをフィルタリングする
Core Data とバインディングを使用するアプリケーションがあります。NSTableView にバインドされた NSArrayController を検索できる NSSearchField が必要です。配列コントローラーには、「名前」フィールドを持つ Core Data オブジェクトが含まれています。次のように NSSearchField をセットアップしました。
これは機能します。配列コントローラー内のオブジェクトに関連するオブジェクトのフィールドを検索できるように拡張したいと考えています。配列コントローラー内の各オブジェクトは、「name」というフィールドを持つ「tag」という別のタイプのオブジェクトと対多の関係にあります。私は次のことを試しました:
ただし、これは機能しません。テキストが NSSearchField に入力されると、NSTableView では何も起こりません。それの何が問題なのですか?