2010-01-18 5 views
1

안녕하세요 stackoverflow 사람들, 저는 코코아를 처음 사용합니다. 나는 XCode 3.1을 가지고있다코코아/Objective-C : 버튼 클릭시 사각형 그리기

상황 : 버튼에 링크 된 동작이있는 (AppController) NSObject 하위 클래스가있다. 내 NSView 하위 클래스 (AppView)에 연결되어있는 drawRect 명령에서 사용자 정의보기를 가지고 있는데, 그 모든 것들이 작동하는 사각형을 그립니다. AppView.ma 함수에서 - (void) drawIt {..} 사각형을 그립니다. 지금은 - (void) drawRect ...에서 [self drawIt]으로 호출했습니다. 그것도 작동합니다.

내가 지금하고 싶은 것은 버튼을 클릭했을 때 drawIt을 호출하는 것이다. (AppController.m에서 Action - (IBAction) ... 버튼으로 인해 호출 될 때 클릭)

나는 당신을 도와 줄 수 있기를 바랍니다. 나는 과거에해야 할 모든 것을 습득 할 수 있도록 stackoverflow에 익숙하지 않습니다. 코드는 여기에 있습니다. 어쩌면 이처럼 쉽게 읽을 수 있습니다.

답변

6

Cocoa Drawing Guide 개념 자료를 읽어야합니다. 시스템에서 필요하다고 판단되면 시스템에서 사용자에게보기를 -drawRect:에게 요청합니다. 이와 관련하여 언제든지 자신의 견해를 그릴 수 있습니다. 그러므로, 당신은 이것을 "현재 상태를 그리는"관점에서 생각해야합니다.

아마도이 기본 상황에서해야 할 일은 사용자 정의보기에 부울 속성 인 "drawIt"을 지정하고 버튼 조치로 뷰 인스턴스를 토글해야합니다. 이 방법은 if (self.drawIt == YES)입니다. 직사각형 그리기 코드를 호출 할 수 있습니다.

-drawRect:이 호출되면 (예 : 흰색으로 전체 경계를 채우는 것과 같은)보기를 "지우려면"무엇인가를 수행 한 다음 조건이 충족 될 경우에만 조건부 항목을 그립니다.

예 :

- (void)drawRect:(NSRect)aRect 
{ 
    // Clean up background (we ignore "aRect", drawing entire view at once) 
    [[NSColor whiteColor] set]; 
    NSRectFill([self bounds]); 

    // Do we want to draw our magic rect? 
    if ([self drawMagicRect]) 
    { 
    [[NSColor redColor] set]; 
    NSRectFill([self magicRect]); 
    } 
} 
+0

감사 - 그렇게 - (IBAction를) buttonAction ... {내가 말할 : drawMagicRect = TRUE; 그래서 그것은보기를 다시로드하고 직사각형이 표시됩니다, 내가 drawMagicRects 기본값을 돌봐 줘야하나요? – Samuel

+0

숙제를해야합니다 : Objective-C 2.0 속성에 대한 문서를 읽으십시오. 새로 고치려면 최상의 방법은 변경된 후에 속성 setter 접근 자 메서드 내에서 [self setNeedsDisplay : YES]를 호출하는 것입니다. 그러면 시스템에 뷰를 다시 그려야한다고 알려줍니다. –

+0

괜찮아요. 조금 읽을 예정이지만 기본 아이디어가 있습니다. ^^ – Samuel