setNeedsDisplay для DrawRect после нажатия кнопки - PullRequest
0 голосов
/ 18 марта 2012

У меня это в пользовательском классе на моем NSView, и когда я нажимаю кнопку, используя свой IBAction drawMyRec, я хочу изменить цвет моего NSRect, однако это не работает, кто-нибудь может помочь?

#import "myView.h"

@implementation myView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        RectColor = [[NSColor blackColor] init];
    }

    return self;
}


- (IBAction)drawMyRec:(id)sender;
{
    NSLog(@"pressed");
    RectColor = [[NSColor blueColor] init];
    [self setNeedsDisplay:YES];
}


- (void)drawRect:(NSRect)dirtyRect
{
    NSRectFill(dirtyRect);
    [RectColor set];

}

@end

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Ваша drawRect функция неверна. изменить на это:

- (void)drawRect:(NSRect)dirtyRect
{
    [RectColor set];
    NSRectFill(dirtyRect);

}
2 голосов
/ 18 марта 2012

Во-первых, почему вы звоните -init на NSColor? Во-вторых, вы set определяете цвет после того, как вы нарисовали прямоугольник, поэтому он не вступит в силу до следующей перерисовки. В-третьих, что такое dirtyRect, когда -drawRect: называется? Почему бы просто не заполнить весь прямоугольник независимо от того, что грязно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...