이와 비슷한 질문이있는 일부 스레드를 보았지만 그 문제는 해결되지 않았습니다. TextCield, DatePicker 및 Button과 같은 각 TableCellView에서 몇 가지 클릭 할 수있는 요소로 NSTableView를 만들었습니다. 먼저 해당 행을 선택하지 않고이 각각을 클릭 할 수 있어야합니다. by setSelectionHighlightStyle: NSTableViewSelectionHighlightStyleNone
그러나 각 행과 연관된 모델 객체에 편집 내용을 전달해야하므로 편집중인 행의 색인을 알아야합니다. 나는 다음과 같은 글을 쓰려고 시도했다. 그것은 내가 언급 한 다른 스레드의 제안 이었지만, 아무 것도하지 않았다.NSTableView 선택 강조 표시는 없지만 선택된 행을 계속 추적합니다.
- (BOOL)tableView:(NSTableView *)tableView shouldTrackCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
return YES;
}
잘못된 방법으로 사용하고 있는지, 아니면 잘못 구현했는지 100 % 확신 할 수 없습니다. 내가 어떻게 이것에 관해 갈 수 있었는지에 관해 어떤 팁이라도 굉장 할 것이다.
편집 :
여기에 스티브 Waddicor의 제안 구현하려고 시도한입니다 :
의 ViewController NSTableViewDataSource 만들기와 개체에 대한 위임 (코드 MyViewController.m에 그대로 TableCellView 설정이) :
- (void)awakeFromNib{
[self.tableView setDataSource:self];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
CustomTableCellView *view = [self.tableView makeViewWithIdentifier:@"MyIdentifier" owner:self];
[view.textField setDelegate:view];
[view.datePicker setDelegate:view];
return view;
}
//-----------------------
//-----------------------
//----------------------- NSTableViewDataSource Protocol Requirements:
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [self.tableView numberOfRows];
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
return [self.tableView rowViewAtRow:rowIndex makeIfNecessary:NO];
}
및 CustomTableCellView에서 이것은 위임자입니다.
- (void)mouseDown:(NSEvent*) theEvent{
NSLog(@"TEST");
}
시도 : 당신의있는 tableView 데이터 소스 내의이 같은 방법 뭔가가? –
@AndrewMadsen 예보기 기반입니다. –
테이블보기에'-clickedRow' 메시지를 보내면 가장 최근에 클릭 한 행의 색인을 찾을 수 있습니다 (선택 여부에 관계없이). 예 :'NSInteger index = self.tableView.clickedRow'. 그것도 작동하지 않는다면 항상 NSTableRowView를 서브 클래스 화하고'representingObject','objectValue' 등의 속성을 추가 할 수 있습니다. 그런 다음'NSTableViewDelegate' 메소드'-tableView : rowViewForRow :'를 사용하여 행 뷰를 반환 할 때 모델 객체를 새로 생성 된 속성에 할당 할 수 있습니다. 다음 주석에 계속 ... –