【发布时间】:2014-03-09 05:49:14
【问题描述】:
我有一个名为 clickView 的 NSView 子类,如下所示。
// clickView.h
@interface clickView : NSView {
BOOL onOff;
}
- (BOOL)getOnOff;
// clickView.m
- (BOOL)getOnOff {
return onOff;
}
- (void)mouseDown:(NSEvent *)event {
if (onOff) {
onOff = NO;
} else {
onOff = YES;
}
[self setNeedsDisplay:YES];
NSLog(@"%@",self.identifier);
}
如果用户点击它,它会利用其 drawRect 方法(此处未显示)为矩形填充颜色。它使用一个布尔值(onOff)来查看它是否被点击。现在,切换到 AppleDelegate,我将这个 NSView 子类实例化如下。
// AppDelegate.m
- (IBAction)create4Clicked:(id)sender {
NSInteger rowCount = 10;
NSInteger colCount = 10;
NSInteger k = 1;
for (NSInteger i2 = 0; i2 < rowCount; i2 ++) {
for (NSInteger i3 = 0; i3 < colCount; i3 ++) {
NSView *view = [[clickView alloc] initWithFrame:NSMakeRect(50+i2*10,50+i3*10,10,10)];
[view setIdentifier:[NSString stringWithFormat:@"%li",k]];
[view1 addSubview:view]; // view1 is NSView that's been created with Interface Builder
k++;
}
}
}
所以我现在在 view1 (NSView) 上显示了 100 个方块。如果我点击任何一个方块,我会得到它的标识符。 (参见“mouseDown”。)现在,我需要弄清楚如何判断哪个方格的“onOff”设置为 YES(或 NO)。
感谢您的帮助。
【问题讨论】:
标签: objective-c macos cocoa nsview