2014-03-26 2 views
2

뷰 기반 NSTableView를 사용하여 Cocoa Bindings를 사용하여 셀의 일부 레이블 및 이미지 값을 변경합니다. 그것은 모두 잘 작동합니다. 그러나 셀에 단추를 추가하고 싶습니다. 단추가 작동하지만 해당 작업 메서드는 보낸 사람으로만 단추가 있습니다. 즉, 단추가있는 셀의 내용을 모르는 것입니다. 버튼에 여분의 데이터를 저장해야합니다. 최소한 버튼이있는 행 인덱스. NSButton을 서브 클래 싱하고 셀에 내 서브 클래스를 사용했지만 인터페이스 빌더는 추가 속성에 대해 알지 못하므로 바인딩 할 수 없습니다. 코드에서 바인딩하고 싶다면 객체 나 키 패스의 이름을 전달할 수 없습니다.뷰 기반 NSTableView + NSButton

어떻게 작동합니까?

답변

5

당신은 행 값

- (IBAction)doSomething:(id)sender 
{ 
     NSInteger row = [_myTableView rowForView:sender]; 
} 
+0

짧은 달콤한를 얻을 수 있도록 조치 방법에 rowForView를 사용할 수 있습니다. 고마워, 고마워! – jsd

0

당신은 당신의 코드에서 인스턴스와 펜촉에서 테이블 셀보기를 연결하는 인터페이스 빌더에서 신원 필드를 사용할 수 있습니다

enter image description here

은 또한 당신은 당신의 테이블 뷰의에서 - tableView:viewForTableColumn:row:을 구현해야 대리자. (IB에 위임을 연결하는 것을 잊지 마세요)

- (NSView*)tableView:(NSTableView*)tableView viewForTableColumn: 
(NSTableColumn*)tableColumn row:(NSInteger)row 
    { 
     SSWButtonTableCellView *result = [tableView makeViewWithIdentifier:@"ButtonView" owner:self]; 
     result.button.title = [self.names objectAtIndex:row][@"name"]; 
     result.representedObject = [self.names objectAtIndex:row]; 
     return result; 
    } 

나는 위의 테이블 뷰 대리자 메서드에서 설정 한 내 NSTableCellView 서브 클래스에 representedObject 속성을 추가했다.

사용자 정의 테이블 셀보기는 나중에 해당 개체를 해당 동작에서 사용할 수 있습니다. 예컨대 :

- (IBAction)doSomething:(id)sender 
{ 
    NSLog(@"Represented Object:%@", self.representedObject); 
}