문제

나는 NSTableView 포함하는 내 사용자 지정 NSCell 서브 클래스,IconCell.

이 IconCell 포함되어 세 가지 요소:이미지,텍스트,그리고 단추입니다.

여기에 간단한 버전의 내가 그리기 코드(closeButton 단추):

- (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];
}

그림 부분이 잘 작동하고 생산식은 다음과 같습니다.

cell screenshot

는 내가 무엇을 원합니다.

또한,내가 원하는 두 가지 중 하나이 일어날 때 사용자가 상호 작용하는 세포:을 클릭하면 어디서든 세포를 제외하고,닫기 버튼을,그것이 해야 할지 actionA.는 경우에는 사용자를 클릭 닫기 버튼을,그것이 해야 할지 actionB.

문제는 내가 하는 것은 닫기 버튼이 보인다"눈에 보이지 않는"--클릭 하는 경우에 그것은,그것을 움직이지 않는 반면(작동하는 버튼을 표시해야 그 아래로 밀어 주),그리고 일반적으로 그것으로 동작하지 않으면 거기 actionA 가 트리거되는 대신 actionB.

이것은 어떻게 설정하는 작업:

[tableView setAction:@selector(actionA)];

[closeButton setAction:@selector(actionB)];

무엇이 잘못된 것입니까?

도움이 되었습니까?

해결책

당신은 단지 그림을 그리의 단추입니다.이것은 같은 것을 배치하는 것처럼 실제 버튼으로 세포입니다.

세포지 않다 전망,그래서 이보다 더 복잡하다고 생각할 수 있습니다.당신이 정말로 필요하다면 이를 세포로,그것은 여기에 설명: NSButtonCell 내부 사용자 지정 NSCell.

하지만...는 경우 제한할 수 있습니다 자신을 10.7+,그들이 추가한 뷰 기반 tableviews.이들은 훨씬 간단하게 할 수 있기 때문에,선체 NSButtonNSTableViewCellView.이 설명서 테이블 보기 프로그래밍 가이드.추천하는 경우 제한할 수 있습니다 자신을 10.7+.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top