모두!) 나는 내 수업에 IBAction를 방법 (체크 박스 클릭)를 가지고 내가 굵은 상태로 체크 박스를 (클릭하여 글꼴 속성을 변경하려면 : 누군가가 나를 도울 수 있다면 난로컬 클래스 변수를 변경하는 방법 IBAction
이문제는) 매우 기뻐 ^거야 . IBAction 메서드에서 로컬 클래스 변수를 변경하려고했습니다. 내 - drawRect : 메서드에 의해 작동하지 않습니다. 변수가 변경되지 않습니다. IBAction 메서드에서 로컬 변수를 변경하는 방법 또는 다른 방법이 있습니까? 감사합니다. . 여기에서 'YES'를 'isBold'변경 변수 아래
#import <Foundation/Foundation.h>
@interface BigLetterView : NSView {
NSColor *bgColor;
NSString *string;
NSString *testString;
BOOL isHighlighted;
BOOL isBold;
BOOL isItalic;
IBOutlet NSButton *boldButton;
NSMutableDictionary *attributes;
}
@property(retain, readwrite) NSColor *bgColor;
@property(copy, readwrite) NSString *string;
@property(readwrite) BOOL isBold;
- (void)drawStringCenteredIn:(NSRect)r;
- (void)prepareAttributes;
- (void)changeIsBold;
- (IBAction)savePDF:(id)sender;
- (IBAction)makeBold:(id)sender; //it's that method
- (IBAction)setItalic:(id)sender;
. (메서드 호출 - 디버거에서 테스트).
- (IBAction)makeBold:(id)sender
{
if ([boldButton state] == NSOnState) {
isBold = YES;
NSLog(@"Action bold=%d", isBold);
}
else {
isBold = NO;
NSLog(@"Action bold=%d", isBold);
}
}
하지만 여기 isBold는 여전히 '아니오'입니다.
- (void)drawRect:(NSRect)rect {
NSRect bounds = [self bounds];
[bgColor set];
[NSBezierPath fillRect:bounds];
[self drawStringCenteredIn:bounds];
NSLog(@"isBold: %d",isBold); //HERE prints 'isBold:0'
if (isBold == YES) {
NSFont *aFont = [attributes objectForKey:NSFontAttributeName];
NSFontManager *fontManager = [NSFontManager sharedFontManager];
[attributes setObject:[fontManager convertFont:aFont toHaveTrait:NSBoldFontMask] forKey:NSFontAttributeName];
}
//whether this view is firstResponder
if ([[self window] firstResponder] == self &&
[NSGraphicsContext currentContextDrawingToScreen]) {
[NSGraphicsContext saveGraphicsState];
NSSetFocusRingStyle(NSFocusRingOnly);
[NSBezierPath fillRect:bounds];
[NSGraphicsContext restoreGraphicsState];
}
} // drawRect
아론 Hillegass 책에서 20 장을하고 있습니다.
코드를 표시하십시오. 특히 조치 방법이 실제로 호출되는지 확인하는 방법을 알려주십시오. –
의견을 주셔서 감사합니다, 올레! 끝냈어. – Alexander