2

タイトルはこの質問から借用しましたが、これは重複していません。その質問者にとって何が悪かったのかについては、私の回答を参照してください。私はその答えの作者であり、私の問題はそれではありません。

3 つの列を持つテーブル ビューがあり、その値バインディングはarrangedObjects配列コントローラーの 3 つのプロパティにバインドされています。配列コントローラーは、ドキュメント オブジェクトの にcontentArrayバインドされています。visitationResultsその配列内の項目は、モデル クラス (VisitationResult) のインスタンスです。selectionIndexesまた、配列コントローラとsortDescriptorsドキュメントのプロパティをバインドしました。

私はいくつかのアクセサーを介して自分のプロパティを変更しています:

- (void) addVisitationResult:(VisitationResult *)newVisitationResult {
    [self insertObject:newVisitationResult inVisitationResultsAtIndex:[self countOfVisitationResults]];
    NSLog(@"arrayController arrangedObjects: %@", [arrayController arrangedObjects]);
}

このNSLogステートメントが実行され、配列コントローラーがモデル オブジェクトを収集して配置していることを確認します。これは、私が自分のプロパティを調べて、ドキュメントの KVO 通知を取得していることを意味します (これは、以前の質問者の問題である、プロパティをバイパスするという問題が、私が抱えている問題ではないことを証明しています)。

NSLogモデル オブジェクト クラスのアクセサ メソッドにステートメントを追加しました。それらの 1 つは、オブジェクトを並べ替えるために、配列コントローラーによって呼び出されています (そのプロパティが並べ替えキーです)。配列コントローラーが知らない他の 2 つは呼び出されません。

したがって、テーブル ビューは空白のままです。

4

1 に答える 1

6

私は問題を見つけました:それは、テーブル ビューのselectionIndexesおよびバインディングを明示的にバインドしたためです。sortDescriptors

とにかく、これは必要ありませんでした。確認したところ、ドキュメントには次のように記載されています。

selectionIndexes

通常、selectionIndexes は、最初の NSTableColumn がバインドされている NSArrayController に自動的にバインドされます。

sortDescriptors

通常、このバインディングは自動的に作成され、最初にバインドされた NSTableColumn の NSArrayController のソート記述子にバインドされます。

必要ないだけでなく、これら 2 つのいずれかまたは両方をバインドすると、テーブル ビューが壊れてしまうようです。

于 2009-12-20T04:51:00.340 に答える