亲爱的 Cocoa 程序员,
我想完成的事情:
我的画布上有一个复选框、一个 popUpButton(它是隐藏的)和一个 NSView。如果选中 myCheckbox -> 显示 popUpButton 并通过 NSView 上的 bezierPath 画一条线。如果 myCheckbox 未选中 -> 再次隐藏 popUpButton 并“取消绘制”路径
编码:
- (IBAction)isChecked:(id)sender {
//if myChekcbox is checked, show the pop up button
if ([sender state]==NSOnState) {
NSLog(@"Checked");
[myPopUp setHidden:NO];
}
else
{
//if the checkbox is unchecked, hide the popupbutton
[myPopUp setHidden:YES];
NSLog(@"Unchecked");
}
//reload my drawrect method (reload the view)
[self setNeedsDisplay:YES];
}
- (void)drawRect:(NSRect)dirtyRect
{
//if the checkedbutton is checked, draw the line
if ([myCheckbox state]==NSOnState)
{
NSBezierPath *myPath = [NSBezierPath bezierPath];
[myPath moveToPoint:NSMakePoint(10, 20)];
[myPath lineToPoint:NSMakePoint(50, 20)];
[myPath setLineWidth:2];
[myPath stroke];
}
}
问题:
如果检查状态 = NSOnState,popUpButton 是可见的,但线条不会绘制,我想知道为什么......我个人认为这是一个连接问题。
我在这里上传了项目文件(它相当小,35kb):Drawing.zip
全局: 我已经阅读了 NSView 文档,它说只有一种方法可以绘制到视图,它是通过 drawRect 方法。这是真的吗?这也是一种绘制视图的下降方式吗?(如果视图中的函数和方法中的 setNeedsDisplay:YES)
在此先感谢,本