我的项目是Mac OS X的某种计时应用程序,我想让TimeCircle中的drawRect刷新myView。我知道之前我问过类似的问题。但是我的问题还没有解决,它与其他相似的主题不同。
到目前为止我所拥有的:
一个NSObject类TimeController,用于启动计时器并在每秒基础上修改一些NSTextEdits。
一个NSView Class 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];
}
为什么一个人正在做这个工作而另一个没有的线索呢?