저는 사용자 정의 NSCell 서브 클래스 인 IconCell이있는 NSTableView를 가지고 있습니다.NSButton은 사용자 정의 NSCell 내부에 그려 지지만 실제로는 클릭 할 수 없습니다.
IconCell에는 이미지, 텍스트 및 버튼의 세 가지 요소가 포함되어 있습니다.
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSPoint cellPoint = cellFrame.origin;
[controlView lockFocus];
CGFloat buttonWidth = [closeButton frame].size.width;
[someNSImage drawInRect:NSMakeRect(cellPoint.x, cellPoint.y, ICON_WIDTH, ICON_HEIGHT) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
[someNSString drawInRect:NSMakeRect(cellPoint.x+ICON_WIDTH+PADDING, cellPoint.y, cellFrame.size.width - ICON_WIDTH - buttonWidth, cellFrame.size.height) withAttributes:someTextAttributes];
[(NSButtonCell*)[closeButton cell] drawWithFrame:NSMakeRect(cellPoint.x + cellFrame.size.width - buttonWidth, cellPoint.y, buttonWidth, cellFrame.size.height) inView:controlView];
[controlView unlockFocus];
}
그리기 부분은 잘 작동하고 다음과 같이 뭔가를 생성합니다 : 무엇을이다
여기 내 드로잉 코드의 단순화 된 버전 (closeButton
버튼입니다)입니다 내가 원하는.
또한 사용자가 셀과 상호 작용할 때 두 가지 상황 중 하나를 원합니다. 즉, 사용자가 셀의 아무 곳이나 클릭하면 닫기 버튼을 제외하고는 actionA
을 수행해야합니다. 사용자가 닫기 버튼을 클릭하면 actionB
을 수행해야합니다.
닫기 버튼이 보이지 않는 것처럼 보입니다. 클릭하면 작동하지 않지만 작동 버튼은 눌려진 상태로 표시됩니다. 일반적으로 작동합니다. 마치 존재하지 않는 것처럼 마치 actionB
대신 actionA
이 트리거됩니다.
[tableView setAction:@selector(actionA)];
및
[closeButton setAction:@selector(actionB)];
내가 잘못 뭐하는 거지 :
이 내가이 작업을 설정하는 방법입니까?
정말 제가 상상했던 것보다 훨씬 더 복잡해졌습니다. 불행히도 나는 10.6에서 어떤 사람들을지지해야한다. 그래서 나는 첫 번째 해결책을 찾아야 할 것 같다. 감사! – houbysoft