問題タブ [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.

0 投票する
2 に答える
1202 参照

cocoa - Cocoa-Bindings:NSObjectControllerを手動で更新しますか?

私の小さなココアアプリケーションでは、NSObjectControllerを使用して、クラスのプロパティをいくつかのテキストフィールドにバインドしました。私がこれまでに抱えている唯一の問題は、NSObjectControllerが現在の入力でクラスを更新する前に、常にテキストフィールドを残す必要があるということです。

これは、ユーザーがtexfieldを離れずに、[保存/送信]ボタンをすぐにクリックした場合に問題になります。クラスには現在の入力が含まれていません。常に悪いこと。

これを回避する方法を探しています。ユーザーがフィールドを終了した場合でも、NSObjectControllerに現在の入力を取得するように指示するようなものです。これが可能であれば、保存する前にこのコマンドをsave-Methodに入れることができ、すべて問題ありません。

0 投票する
1 に答える
1261 参照

cocoa - NSDictionaryController がコンテンツ ディクショナリの変更を監視していないようです

簡単なものが欠けているに違いありませんが、tableView を NSDictionaryController にバインドする際に問題が発生しています。これが私の現在のスキームのモデルです:

TableViewColumn --bindsTo-->DictionaryController.arrangedObjects.(値またはキー) --bindsTo-->someClass.someClassMember.aDictionary.

init で aDictionary にエントリを追加して tableView をテストしたところ、正しく表示されました。しかし、別のメソッドがオブジェクトを生成し、それが aDictionary に追加されると、TableView は更新されていないように見えます。また、aDictionary に 2 つのエントリがあることさえ認識していません。考えられることはすべて試しました。私はaDictionaryに直接アクセスしていません....(someClassMemberで)[self aDictionary setValue:forKey:]、および[self setValue:forKeyPath:@"aDictionary"]および同様のバリエーションを試しました。キーは文字列なので、KVC/KVO に準拠する必要があり、someClassMember に「@synthesize」された aDictionary があります。

私は何が欠けていますか?辞書への新しいエントリが tableView に表示されないのはなぜですか?

前もって感謝します

0 投票する
1 に答える
330 参照

cocoa - アレイコントローラーからエンティティを削除するときにエンティティを削除するにはどうすればよいですか?

管理対象オブジェクトモデルに、他の2つのエンティティ(部門とチームなど)に関連するエンティティ(従業員など)があります。どちらの関係も1対多です(つまり、従業員には1つの部門と1つのチームが必要であり、チームと部門には多くの従業員がいます)。この2つは重複する場合と重複しない場合があります(たとえば、チームがHR、経理、ITの従業員で構成されている場合や、1つの部門の複数の従業員で構成されている場合があります)。

2つのNSTableViews、DepartmentテーブルとTeamテーブルにデータを提供する2つのNSArrayControllerがあります。従業員は部門間やチーム間を問題なく移動できますが、従業員を削除(解雇)する方法がわかりません。

いずれかのアレイコントローラーに削除メッセージを送信すると、従業員はチームから削除されますが(たとえば)、部門に残され、オブジェクトグラフは一貫性のない状態になります。両方のコントローラーで削除アクションを呼び出しても、オブジェクトは削除されません。孤立していて、ただぶらぶらしているだけです。

元々、(従業員エンティティの)部門とチームの関係をNullifyの削除ルールに設定していましたが、一方または両方をカスケードに変更しても役に立ちません。

従業員を実際に削除するには、アレイコントローラーのremove:アクションをオーバーライドする必要がありますか、それとも本当に明らかなものが欠落していますか?

0 投票する
2 に答える
1330 参照

cocoa - Core Data、NSTableColumn バインディング、およびカスタム NSCell

管理オブジェクトを適切に描画できるカスタムを使用してNSManagedObjects、の配列を表示しようとしています。NSTableViewNSCell

さらに言えば、 my の単一の列はa の にNSTableViewバインドされています。オブジェクトでキーパスを使用していません。arrangedObjectsNSArrayController

NSCellテーブルビューが特定のアイテムを描画したいときにサブクラスがメッセージを受け取るという印象を受けましたsetObjectValue:が、これは起こっていません。しかし、プロトコルNSManagedObjectsに準拠していないため、それは機能しません。Copying

これは一般的なタスクであり、これを行うための簡単な方法があるに違いないと思いますが、今のところ実際にはわかりません。

任意の洞察をいただければ幸いです。

0 投票する
3 に答える
4765 参照

cocoa - Cocoa-Binding の更新 - NSArrayController - ComboBox

私のアプリケーションでは、非常に単純なバインディングを作成しました。NSArrayController にバインドされた NSMutableArray があります。コントローラー自体は ComboBox にバインドされ、NSMutableArray のすべてのコンテンツを表示します。正常に動作します。

問題は次のとおりです。配列の内容が変更されます。ユーザーがアプリに何らかの調整を加えた場合、NSMuteableArray 内のすべてのアイテムを削除し、新しい別のアイテムで埋めます。

ただし、NSMutableArray <-> NSArrayController <-> NSComboBox のバインドは更新されません。

Array からすべてのオブジェクトを削除しても、ComboBox には同じアイテムが表示されます。

ここで何が問題なのですか?私のアプローチは間違っていますか、それともバインディングにそれ自体を更新するように指示するだけでよいですか? その方法がわかりませんでした。

0 投票する
1 に答える
2187 参照

cocoa - Cocoa-Bindings:NSComboBoxの選択をNSObjectControllerのフィールドにバインドします

私のアプリケーションでは、NSObjectControllerがユーザーインターフェイスのすべてのコントロールにバインドされています。これは今のところうまく機能します。私が抱えている唯一の問題は、NSComboBoxの選択を同じObjectControllerにバインドすることです。今日私が知っている限り、ComboBoxの値は常に文字列であるため、OBjectControllerのクラスのフィールドもNSStringです。私にとっては簡単に聞こえますが、機能しません。

私は常に「...クラスはキーのキー値コーディングに準拠していません...」を取得します。

ComboBox自体の項目は、他のコントローラーであるNSArrayControllerからのものです。しかし、その部分は正常に機能します。配列のすべてのアイテムは、ComboBoxのアイテムです。私が抱えている問題は、選択をObjectControllerに取り込むことです。

0 投票する
2 に答える
2957 参照

cocoa - NSTableView と NSCollectionView の違い

Snow Leopard アプリを開発するためにどの道をたどるかを決めようとしています。まず、明らかな違いを紹介する必要があります。

NSTableViewデータの同じ「要素」(行)のさまざまな部分を表すために複数のデータ列を持つことができ、NSCollectionViewデータのグリッドも表示できますが、すべての行 + 列の組み合わせは独自の要素です。私の目的のために、1 つの列を扱っていると仮定します。

  1. 私が知る限り、NSCollectionViewitem はNSViewすべて同じ次元でなければならない です。また、 とは異なりNSTableView、 collectionview アイテムはNSCollectionView必要に応じて から提供されるのではなく、 にコピーされますdataSource(これについてはよくわかりません。間違っている場合は訂正してください)。

  2. NSTableViewNSCell行の表示をカスタマイズする場合は、s を使用します。NSCellではないので、イベントNSResponderをどのように処理しますか (iTunes の矢印がどのように機能するかのように、セルに何らかのアクセサリを追加したい場合 (ただし、iTunes は Carbon です) NSCell。IB でいくつかのサブクラスが表示されるのを見てきました)それらの兄弟と同等である必要がありますが、オブジェクトを?)NSControlに入れたい場合はどうすればよいですか?)。MySweetViewNSCell

  3. バインディングに関してはどちらもほぼ同じように見えますね。

  4. 最後に、NSCollectionViewその要素のアニメーションでうまく機能するように見えます (たとえば、アイテムの再配置やフィルター処理など)。NSTableViewその行でこれを行うことができますか?

他に考慮すべきことはありますか?

0 投票する
1 に答える
222 参照

cocoa - Cocoa : ディスクからデータを解凍した後に NSObjectController を更新する

NSObjectController を使用してユーザー インターフェイスにバインドされたオブジェクトがあります。オブジェクトをアーカイブし、後でアーカイブ解除できます。これはこれまでのところうまくいきます。デバッガーで、オブジェクトが以前のセッションで保存したデータを保持していることを確認できます。残りの問題は、ユーザー インターフェイスが更新されないことです。どうにかして NSObjectController に、他のオブジェクトを処理する必要があることを伝えなければならないと思います。しかし、方法がわかりません。newObject を試しましたが、まったく機能しませんでした。

現時点では、私のコードは次のようになります。

rpgCharacter は、myCharacterController のオブジェクトである必要があります。

0 投票する
2 に答える
1289 参照

cocoa - Interface Builder を使用して日付範囲でデータを取得する

典型的な IB とデータ バインディングを使用して行われる NSTableView があります。それはうまくいきます。

ただし、日付範囲を示すためにセグメント化されたコントロールを配置する必要があります。たとえば、ユーザーが「昨年」のセグメント化されたコントロール ボタンをクリックすると、テーブルには昨年のレコードのみが表示されます。

IB で NSArrayController のデータ バインディング オプションを見ましたが、これを行う方法がわかりません。

誰かが私を正しい方向に向けることができますか?

*アップデート:

私が取り組んでいるアプリには、「今年」、「昨年」、「合計」の 3 つの SegmentedControl ボタンと、ユーザーが選択した年の選択に関連付けられたレコードを表示するテーブルビューがあります。そのため、「今年」を選択するとテーブルビューが再読み込みされ、現在の年のレコードが表示され、「昨年」を選択するとテーブルが再読み込みされて昨年のレコードが表示されます。