我的项目是 Mac OS X 的某种计时应用程序,我想让 TimeCircle 中的 drawRect 刷新 myView。我知道我之前问过类似的问题。但是我的问题还没有解决,它与其他类似的主题不同。
到目前为止我所拥有的:
一个 NSObject 类 TimeController,它启动一个计时器并以每秒为基础修改一些 NSTextEdits。
一个 NSView 类 TimeCircle,它连接到一个自定义视图,我想用一个像手一样的时钟画一个圆圈来表示进度。
在 TimeController.m 中导入 TimeCircle.h
一个实例方法drawRectOutsideWrapper,我在计时器运行时发送一条消息。[TimeCircle drawRectOutsideWrapper:(float) seconds]; 这行得通。
drawRectOutsideWrapper 是这样的:
- (void) drawRectOutsideWrapper:(float) seconds {
liveAngle= seconds;
[self->myTimeCircleView setNeedsDisplay:YES];
}
drawRectOutsideWrapper正确接收来自TimeController的消息!
问题是[self->myTimeCircleView setNeedsDisplay:YES]; 不会触发drawRect。它什么也不做。出于测试目的,我集成了一个滑块makeLiveLine,它实际上做同样的事情并且drawRect被正确触发:
- (IBAction)makeLiveLine:(id)sender {
liveAngle= [sender intValue];
[self->myTimeCircleView setNeedsDisplay:YES];
}
任何线索为什么一个人在做这项工作而一个人没有?