문제

내가 만들기 NSCell 서브 클래스는 그 일부 개체에 직접기(사용 drawInRect:fromRect:operation:fraction:respectFlipped:hints: 고)을 그립니다 NSButton 인스턴스를 사용하여 간단하게 NSView 의 addSubview: 선택합니다.

오브젝트를 사용하여 그린 첫 번째 방법은 모든 그리 correclty,는 데 문제가 있으로 그리기 NSButton 습니다.문제는 나 NSButton 인스턴스를 그릴 것입니다에서 오른쪽 장소,하지만 여러 번 이상.

내가 이것을 위해 인터넷에는 어떤 사람들은 제안을 사용하여 캐쉬하지만,나는 확실하지 않은 경우 효율적입니다.(가열 단추를 포함하는 루프를 사용하여 확인할 수 있게 되었습니다.느린 스크롤문 전시의 많은 데이터...)

당신이 어떻게 이런?내가 짖는 잘못된 나무입니까?

이것은 관련 코드:

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{    
    NSRect _controlRect = cellFrame;

    float _Y = cellFrame.origin.y;

    NSRect _accessoryRect = NSMakeRect(_controlRect.size.width - 70.0f, _Y + 9.0f, 50.0f, 23.0f);

    _switch = [self _choiceSwitch];

    [_switch setFrame:_accessoryRect];
    [controlView addSubview:_switch];
}
도움이 되었습니까?

해결책

긴 이야기를 짧: 친구들지 않자 친구 addSubview, 하는 동안,그림입니다.

이 기본 및 특히 잘 설명 측면을 관리하는 제어 인터페이스이지만,중요한 올을 그립니다.

하자 컨트롤러 지시"주의"하위할 수 있습 꽉 잠는 것을 알고 있는 버튼을 얻을 수 없 명백히 청소만에 대한(하지 않는 경우에 그것은 점점 밀리 주위의 내부 사용자 정의 그리 루틴).

그것은 쉽게 얻을 갇혀서 이 골목 같은 원인,야,나는 추가 NSImageViewinitWithFrame 고는 모든 것이 좋아요...하지만 그것은 그냥 정의하지 않는 방법 당신이 그것을 할, 내 생각...고 시작하면 하위 클래스 NSControl,etc.시작할 때 실현하는 이유.

Updated: 여기에는 정말 좋은 작성 디자인에 사용자 정의 컨트롤와 동전으로,다양한 샘플 프로젝트 첨부-구현하는 종류의 코드를 조직할 수 있는 방지하는 데 도움이 이 유형의 문제입니다.예를 들어..을 알 수 있 컨트롤러에서 클래스가 유지하는 각각의 버튼을 분리,독특하고,독립적이 다른 뷰의 비즈니스...

for (int butts = 0; butts < 3; butts++) {
    NSRect buttFrame = NSMakeRect(0, butts * 10, 69, 10);
    ExampleButt *butt = [[ExampleButt alloc]initWithFrame:buttFrame];
    [mainView addSubview:butt];
}

enter image description here

다른 팁

"Drawing" NSButton 을 추가하여 해당 인스턴스로 계층 보기 매번 당신은 그릴 셀 자신은 확실히 잘못된 생각이다.대신,을 만들 NSButtonCell 및 구성을 그것의 맛이 있습니다.그런 다음 -[NSCell drawInteriorWithFrame:inView:] 사용 셀 ivar 을 그리는 그것의 모니다.

하려면 클릭 가능 NSButton 인스턴스의 각 셀에는 테이블 보고,시도의 호출을 방지하기 위해 addSubview: 을 때 가능합니다.각각의 시간을 당신은이,제어 보이 무효화될 수 있습니다 레이아웃과 다시 그리는 처음부터 모든 것을 만들고 어떤 종류의 재귀에서 당신의 경우입니다.

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