2016-06-24 15 views
0

My Setup:セルベースのNSTableviewがあります。列はNSArrayControllerの値にバインドされています(Interface Builderのキー値バインディング)。 NSArrayControllerには、NSManagedObjects(CoreDataエンティティ(デバイス))のセットが含まれています。テーブルビューのsortDescriptorは、配列コントローラの1つにバインドされています。NSTableView:1行の名前を変更すると、すぐに2行の名前が変更されます。

My Issue:名前でテーブルビューをソートしてから、行の名前を変更すると、NSArrayControllerは内容を並べ替えて、nstableviewは行の順序を変更します。それが欲しいです。ただし、1行の名前を変更するだけでなく、2行の名前を変更します。これは、ソート・ディスクリプタのために行の順序を変更する必要がある場合にのみ発生します。

I.e.テーブルビューは、下の左の行のようになります。私はFの名前を変更する場合、それは私が名前をもう一度設定内容を確認するnameプロパティのセッターにブレークポイントを設定し、右

a   ->   a 
c   ->   b 
d   ->   b 
e   ->   c 
f   ->   d 

上の行に変更Bに。しかし、私はスタックを見ることによってはるかに賢くなることはありません。

これは、セッターが呼び出されている最初の時間です: enter image description here

これが二度目です: enter image description here

私はしかし、私はこの現象を再現することはできません、サンプルアプリケーションをビルドしています。私はどこかで間違ったことをしているに違いないが、私は何かを見つけることができない。一日中すべてのことを試しました。誰もがアイデアを持っていますか、ここで何がうまくいかないのですか?感謝:)

+0

セルベースのtableviewは、コンテンツ、selectedIndexesおよびsortDescriptorsを自動的にバインドします。 – Willeke

+0

テーブルビューはendEditing/makeFirstResponderを2回呼び出しています。これは 'editedRow'を使ったものかもしれません。 NSTableViewをサブクラス化しましたか?どのデリゲートメソッドとデータソースメソッドを実装しましたか? – Willeke

+0

@Willekeよろしいですか? selectedIndexesとsortDescriptorsのバインディングを削除すると、アレイコントローラの選択は変更されません。また、テーブルビューはソート可能でもありません。サブクラスなし。デリゲートとデータソースを削除しましたが、それでも同じです。 tableViewsのデータは、arrayController.arrangedObjectsに設定されたcontentプロパティです。 – Daniel

答えて

0

私は、問題の原因を発見した:

私は確信してどのような正確な理由イストないですが、私は間違っていた二つのリングがありました。

  1. NSTableViewのコンテンツプロパティであるNSArrayControllerのarrangedObjectsをバインドしました。私はそれを取り除いた。 NSTableViewにデータが一切表示されていないので、間違っていなければならないことに気付いたのです。
  2. NSTableViewが でバインドされているとき、NSArrayControllerはまだ準備ができていませんでした。したがって、列は nilにバインドされています。私は今、配列の値が配列されるとすぐにNSArrayControllerの配置されたObjectObjectsにプログラムで列の値をバインドします。
+0

バインディングが設定されている場合は、arraycontrollerの内容をnilにすることができます。それはバインディングの楽しさです、彼らは変化を観察します。 – Willeke

+0

どういうわけか彼らはしませんでした。うーん。 – Daniel

関連する問題