1

を動的に作成する Core Data ドキュメント アプリケーションに取り組んでいますNSTableColumns。データ セル タイプは、チェックボックス、スライダーなどです。プログラムによるすべてのセル タイプへのバインドは機能しますが、NSTextFieldCell.

すべてNSTextFieldCellsバインドに失敗し、編集後にデフォルト値に戻ります。NSNumberFormatterこれは、それらが文字列、数値 (適用済み)、または日付 (適用済み) のいずれにバインドされているかに関係なく発生しますNSDateFormatter。すべてのバインディングを行うために次の形式を使用しています。

NSDictionary *textFieldOpts = [NSDictionary dictionaryWithObjectsAndKeys:@"YES", NSContinuouslyUpdatesValueBindingOption, @"YES", NSValidatesImmediatelyBindingOption, nil];
[aCell bind:@"value" toObject:[[entryAC arrangedObjects] objectAtIndex:0] withKeyPath:@"numberData" options:textFieldOpts];

繰り返しますが、これらのステートメントは、セル タイプが 以外の場合に機能しNSTextFieldCellます。

値が変更されたときにログに記録する-observeValueForKeyPathメソッドを投入しました...そして他のセルタイプ(NSSliderCellたとえば)については、値が変化するのを見ることができますが、 を使用するとNSTextFieldCell、決して更新されません。

4

1 に答える 1

0

NSTableView データ ソース メソッド setObjectValue を実装して、NSTableView (ビュー) から手動で変更を取得し、次のコードのように配列コントローラー (モデル) にデータを手動で設定する必要があることがわかりました。

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    [[[entryAC arrangedObjects] objectAtIndex:rowIndex] setValue:(NSNumber *)anObject forKey:@"numberData"];
}

なんらかの理由で、NSTextFieldCells へのバインディングは、セルごとにプログラムで設定された場合、データのみを表示するという 1 つの方法でしか機能しません。個人的にはこれをバグとして分類します...

于 2010-03-31T20:17:59.283 に答える