ソース リスト NSOutlineView のアイテムを編集および更新しようとして失敗しました。ツリー コントローラーではなく、データソースとデリゲートを使用しています。
私の理解では、outlineView:setObjectValue:forTableColumn:byItem データソース メソッドはセル ベースのアウトライン ビューに適用され、ビュー ベースでは呼び出されません。
NSTableView には同様のデータソース メソッド tableView:setObjectValue:forTableColumn:row がありますが、今回はセル ベースのテーブル用であり、「代わりにビュー セルの各アイテムにターゲット/アクションが使用される」とドキュメントに記載されています。</p>
そのため、これを行う方法がよくわかりません。以下のテキストフィールドデリゲートメソッドを試しました。
- (void)controlTextDidBeginEditing:(NSNotification *)aNotification
{
selectedRowList = [[self outlineView] selectedRow];
}
- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
NSManagedObject *selectedGoal = [[self outlineView] itemAtRow:selectedRowList];
NSTableCellView *viewCell = [[self outlineView] makeViewWithIdentifier:@"DataCell" owner:self];
[selectedGoal setValue:[[viewCell textField] stringValue] forKey:@"goalName"];
[self updateOutlineView];
}
テキストフィールドの値を変更できますが、ビューからこの値を取得できないようです。問題は、行が一度も選択されなくなったことだと思います- (void)controlTextDidEndEditing:(NSNotification *)aNotification が実行されます。
NSOutlineView アイテムの更新を最適に処理する方法について、誰かが正しい方向に向けることができますか?
ありがとう