我有一个主视图(NSView的子类),由于我是cocoa的新手,我想知道如何在事件函数中更新视图。我知道有许多方法可以通过-(void)mouseMoved:(NSEvent*)event
或- (void)mouseClicked:(NSEvent*)event
之类的事件来确定要执行的操作是否就绪。我想知道应该在哪里更新主视图:是在-(void)mouseMoved:(NSEvent*)event
中还是在- (void)drawRect:(NSRect)dirtyRect
中。如果它是drawRect格式的,那么我应该如何将信息传递给它?
提前感谢!
发布于 2011-01-12 22:50:47
这里有一个快速的解释,希望能带你上路:
用户操作通过事件(键盘+鼠标)和操作(按钮和其他控件解释的事件)传递到视图和窗口。您的视图应该通过更新模型来对这些事件和操作做出反应,模型是表示程序向用户显示的内容的低级数据结构。如果是Cocoa,则视图通常通过控制器对象进行通信,以对模型进行更改。
无效显示/触发器重绘
更新模型后,需要通知视图需要重绘。这可以用几种方法来完成,但最简单的方法是-setNeedsDisplay:YES
。这将确保在不久的将来的某个时候,视图将重新绘制以显示更新后的模型数据。
在某个时刻,Cocoa会在你的视图上调用-drawRect:
。在-drawRect:
中,您应该从模型中读取必要的数据并绘制必要的图形。您不应该在此方法中对模型进行任何操作。
https://stackoverflow.com/questions/4666708
复制相似问题