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に。しかし、私はスタックを見ることによってはるかに賢くなることはありません。
私はしかし、私はこの現象を再現することはできません、サンプルアプリケーションをビルドしています。私はどこかで間違ったことをしているに違いないが、私は何かを見つけることができない。一日中すべてのことを試しました。誰もがアイデアを持っていますか、ここで何がうまくいかないのですか?感謝:)
セルベースのtableviewは、コンテンツ、selectedIndexesおよびsortDescriptorsを自動的にバインドします。 – Willeke
テーブルビューはendEditing/makeFirstResponderを2回呼び出しています。これは 'editedRow'を使ったものかもしれません。 NSTableViewをサブクラス化しましたか?どのデリゲートメソッドとデータソースメソッドを実装しましたか? – Willeke
@Willekeよろしいですか? selectedIndexesとsortDescriptorsのバインディングを削除すると、アレイコントローラの選択は変更されません。また、テーブルビューはソート可能でもありません。サブクラスなし。デリゲートとデータソースを削除しましたが、それでも同じです。 tableViewsのデータは、arrayController.arrangedObjectsに設定されたcontentプロパティです。 – Daniel