-
11-12-2019 - |
문제
내가 만들기 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
, 하는 동안,그림입니다.
이 기본 및 특히 잘 설명 측면을 관리하는 제어 인터페이스이지만,중요한 올을 그립니다.
하자 컨트롤러 지시"주의"하위할 수 있습 꽉 잠는 것을 알고 있는 버튼을 얻을 수 없 명백히 청소만에 대한(하지 않는 경우에 그것은 점점 밀리 주위의 내부 사용자 정의 그리 루틴).
그것은 쉽게 얻을 갇혀서 이 골목 같은 원인,야,나는 추가 NSImageView
나 initWithFrame
고는 모든 것이 좋아요...하지만 그것은 그냥 정의하지 않는 방법 당신이 그것을 할, 내 생각...고 시작하면 하위 클래스 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];
}
다른 팁
"Drawing" NSButton
을 추가하여 해당 인스턴스로 계층 보기 매번 당신은 그릴 셀 자신은 확실히 잘못된 생각이다.대신,을 만들 NSButtonCell 및 구성을 그것의 맛이 있습니다.그런 다음 -[NSCell drawInteriorWithFrame:inView:]
사용 셀 ivar 을 그리는 그것의 모니다.
하려면 클릭 가능 NSButton
인스턴스의 각 셀에는 테이블 보고,시도의 호출을 방지하기 위해 addSubview:
을 때 가능합니다.각각의 시간을 당신은이,제어 보이 무효화될 수 있습니다 레이아웃과 다시 그리는 처음부터 모든 것을 만들고 어떤 종류의 재귀에서 당신의 경우입니다.