1

ソース リスト 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 アイテムの更新を最適に処理する方法について、誰かが正しい方向に向けることができますか?

ありがとう

4

1 に答える 1