소스리스트 NSOutlineView에서 아이템을 편집하고 업데이트하려고 시도했지만, treecontroller를 사용하지 않고 데이터 소스와 델리게이트를 사용하고 있습니다.NSOutlineView 아이템 업데이트하기
내 이해는 outlineView : setObjectValue : forTableColumn : byItem 데이터 소스 메서드는 셀 기반 outlineviews에 적용되며 뷰 기반으로 호출되지 않습니다.
NSTableView는 tableView : setObjectValue : forTableColumn : row와 비슷한 데이터 소스 메서드를 가지고 있지만 이번에는 문서가 셀 기반 테이블이고 "대신 대상/작업이 뷰 셀의 각 항목에 사용되었습니다"라고 나와 있습니다.
그래서, 어떻게해야할지 모르겠다. 아래 텍스트 필드 위임 메서드를 시도했다.
- (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 항목 업데이트를 가장 잘 처리하는 방법에 대해 올바른 방향으로 나를 가리킬 수 있습니까?
- (void)controlTextDidChange:(NSNotification *)notification {
NSTextField *textField = [notification object];
NSTableRowView *parentRow = (NSTableRowView*)[[textField superview] superview];
NSInteger row = [self.outlineView rowForView:parentRow];
//..
}
:
감사