NSTextFieldCell이 포함 된 3 개의 열이있는 tableView가 있습니다. 모든 것은 바인딩으로 채워집니다.편집 모드에서 NSTextFieldCell을 만드는 방법은 NSTextField 대신 사용자 정의보기를 표시합니까?
열 중 하나의 셀 텍스트가 계산되어 직접 편집 할 수 없습니다. 이 열에 대해서는 셀이 편집 모드으로 바뀌면 , 에는 텍스트 필드 대신 단추 또는 사용자 정의보기가 표시됩니다.
는 다른 방법으로는, 내가 편집되지 않는 경우 NSTextFieldCell 인 NSCell에, 편집되는 NSButtonCell (또는 사용자 정의보기를) 원하는 말했다.
여기에 대한 힌트는 무엇입니까?
가 나는 NSTextFieldCell
를 서브 클래스하고 문제가 NSButton입니다> = 아래 그림처럼 fieldEditorForView:
를 오버라이드 (override) :
- # 1보십시오 : 여기
내가 성공하지, 뭘하려 나는setDelegate:
와 아마 많은 다른 재료에 반응하지 않는 것을 돌려주고있다.- (NSTextView *)fieldEditorForView:(NSView *)aControlView { NSTableView *tableView = (NSTableView *) aControlView; // Manually computing column and row index for testing purposes NSButton* button = [[NSButton alloc] initWithFrame:[tableView frameOfCellAtColumn:2 row:2]]; return (NSTextView *)button; }
- # 2보십시오 :
서브 클래스
NSTextFieldCell
및이 방법은 편집 모드에서 셀하지를 그리는 데 사용 =>drawWithFrame: inView:
우선합니다.- # 3보십시오 :
이 리드 몇 가지 가능성이있다,하지만 나는 분명히 여기서 뭔가를 누락.
windowWillReturnFieldEditor: toObject:
을 내 윈도우의 위임에 구현하고 사용자 정의 필드 편집기를 반환하십시오. 나는 옳은 길에있는 것처럼 보였지만 나는 무엇인가 놓쳤다. 인자 anObject는 절대로 내 사용자 정의 셀이 아닙니다 (이중 체크하고 XIB에서 올바르게 정의되었습니다). 그것은 나에게 이렇게하는 가장 좋은 방법을 보인다- (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject { if ([anObject isKindOfClass:[NSCellTextAndButtonAtEditTime class]]) { NSLog(@"Going there"); NSButton* button = [[NSButton alloc] initWithFrame:CGRectMake(0, 0, 300, 20)]; button.title = @"test"; return button; } return nil; }