我在简单的cocoa应用程序中重绘自定义视图时遇到问题。绘图基于一个由简单的NSSlider更改的参数。但是,虽然我实现了-setParameter:和-parameter方法并将滑块的值绑定到界面构建器中的该参数,但我似乎无法使自定义视图重绘自身。
重绘的代码是这样的:
- (void)setParameter:(int)newParameter {
parameter = newParamter;
NSLog(@"Updated parameter: %d", parameter);
[self setNeedsDisplay:YES];
}
虽然视图没有重绘,但我确实收到了有关设置新参数的消息。欢迎任何想法!
答案 0 :(得分:5)
通常的语法是:[self setNeedsDisplay:YES]
,虽然我认为这意味着同样的事情。您是在实施- (void)drawRect:(NSRect)rect
方法,还是使用超类的drawRect:
方法?
答案 1 :(得分:2)
对于在使用NSOpenGLView
子类时遇到此问题的任何人,您可能忘记在[[self openGLContext] flushBuffer]
末尾使用drawRect:
。
答案 2 :(得分:2)
有时候原因可能非常简单:文件所有者与UIView对象没有任何关联。即它的出口设置不正确。 使用IB,ctrl按钮和拖动方法:)
答案 3 :(得分:0)
在iOS 6中,没有这样的功能可以调用:setNeedsDisplay:YES
。我遇到了同样的问题,并附带了这个解决方案:https://stackoverflow.com/a/15027374/1280800。
希望它会有所帮助。