問題タブ [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.
objective-c - 複数の XIB から 1 つの NSArrayController を使用する
1 つの NSArrayController の内容を異なる XIB で定義された 2 つのウィンドウに表示する際に問題が発生しています。
私のメイン ウィンドウ (MainMenu.xib) には、NSArrayController にバインドされた NSTableView があります。
2 番目の XIB には、NSTableView を含む別のウィンドウがあります。新しい NSArrayController を作成し、テーブルをその NSArrayController の内容にバインドしました。
両方の NSArrayController は、まったく同じ NSArray にバインドされています。
最初はすべて問題ありませんが、問題は、メイン ウィンドウで NSArrayController を使用してオブジェクトを配列に追加すると、セカンダリ ウィンドウのデータ ビューが更新されないことです。これは、新しいオブジェクトの追加に NSArrayController が使用されていないため、自分自身を更新する必要があることを認識していないことが原因である可能性が最も高いです。
私がやりたいことは、両方のウィンドウで NSArrayController のまったく同じインスタンスを使用することです。このようにして、オブジェクトが配列に追加されると、両方のビューに変更が通知されます。
問題は、Interface Builder でこれを行う方法がわからないことです。NSArrayController を別の NSArrayController にバインドできません (NSArray にしかバインドできないことを示す実行時エラーが発生します)。NSArrayController を File's Owner の NSArrayController メンバーに接続しても、使用したい NSArrayController が消去されるだけなので、どちらも役に立ちません。
コードでバインディングを自分でセットアップすることもできると思いますが、可能であれば Interface Builder を使用する方がよいようです。Interface Builderでこれを行う方法はありますか、またはこれをすべて一緒に設定するより良い方法はありますか?
更新: Chuck の回答とコメントに応えて、次のことを試しました。 : 認識されないセレクターがインスタンスに送信されました") - テーブルの各列を、arrayController.arrangedObjects.propertyName のモデル キー パスを使用してファイルの所有者にバインドします。
これでも、テーブルの内容が更新されることはありませんでした。これは、NSArrayController 自体ではなく、NSArrayController の ArrangeObjects にバインドしているためだと思います。しかし、NSArrayController に直接バインドすると、エラーが発生します。
通常、「Bind to」ComboBox から NSArrayController を選択し、arrangedObjects をコントローラー キーとして使用し、プロパティ自体をモデル キー パスとして使用します。この場合、それと同等のことを行う方法がわかりません-できれば。
上記のプロセスで何か間違ったことをしましたか?
cocoa - 正しく選択された NSManagedObjects を削除します
この素晴らしいスクリーンショットを見て、私が何を質問できるか想像できると思います...
スクリーンショット http://a4.s3.p.quickshareit.com/files/screenshot_75d0fc54a05ec7eae3f410.png プレイヤー:
右側: 設定パネル
NSTableView
、左側: メインウィンドウNSPopUpButton
(NSMenu
;] の下)
ポップアップの選択されたオブジェクトは、テーブルビューでこれらのいずれかにバインドされます。テーブルビューから(選択したポップアップで)オブジェクトを削除すると、この醜いもの(そこに表示されるもの)が表示されます。私は CoreData を使用しており、NSArrayController は 1 つのエンティティにバインドされています。
私は2つの興味深いものを見つけました:
最初に、誰かがいつテーブルビューからアイテムを削除したかを知っています。残念ながら、私の問題では2番目は機能しません...
では、この醜いものを吹き飛ばす方法はありますか? =D
ところで、この素敵なアプリとネイティブの URL 短縮サービスに興味がある場合は、こちらをご覧ください。
objective-c - Cocoa で null プレースホルダーをバインドすることは可能ですか?
ユーザーが入力するまで特定のセルが nil になるテーブルがありますが、nil
他の部分に応じて null プレースホルダー (つまり、そのセルの特定の値が のときに表示される値)を変更できることを望んでいました。ユーザーがすでに入力または構成したアプリケーション。オートコンプリートのようなものですが、完全ではありません。
null プレースホルダー値をバインドすることは可能ですか、それともこの動作を手動でエミュレートする必要がありますか?
編集:
明確にするために、テーブル全体またはテーブル列全体に適用する単一のプレースホルダー値ではなく、個々のセルに個別のプレースホルダー値を持つソリューションを探しています。
objective-c - Binding two different model-key-paths to the same NSArrayController selection
Say I have the following array of dictionaries:
How can I bind the fullName
values to the values of an NSPopUpButton control but bind the selection's isoName
to NSUserDefaults? I have an NSArrayController set up with an array like the above, and my NSPopUpButton is bound to this controller with the model key path as "fullName", but I want to keep the isoName
in the NSUserDefaults. Is this possible? Is there a better way to approach this?
objective-c - Objective-CとCocoaバインディングを最もよく表すものは何ですか?
CocoaBindingsを理解するのに問題があります。誰かが私にこれが何であるかを人間が知覚できる方法で説明できますか?
cocoa - Interface Builder> Inspector> Bindingsの「ControllerKey」とはどういう意味ですか?
それらのすべてのフィールドとその意味を説明しているドキュメントは見つかりません。特に「コントローラーキー」は私にはわかりません。
cocoa - Inspector > Bindings ペインの IB の "Controller Key" プロパティのポイントは何ですか?
アップルは次のように述べています。
NSController オブジェクトの属性。NSController オブジェクトにバインドする場合、このフィールドを使用してキー パスの最初のエントリを選択します。このフィールドに関連付けられたメニューには、便宜上、選択したコントローラー オブジェクトで使用可能なプロパティが表示されます。プロパティの名前を入力するか、表示されたリストから選択することができます。
誰かがそれを別の言葉で説明できますか?