5

我在简单的可可应用程序中重绘自定义视图时遇到问题。绘图基于一个简单的 NSSlider 正在更改的参数。但是,尽管我实现了 -setParameter: 和 -parameter 方法并将滑块的值绑定到界面构建器中的该参数,但我似乎无法制作自定义视图来重绘自身。

重绘的代码是这样的:

- (void)setParameter:(int)newParameter {
  parameter = newParamter;
  NSLog(@"Updated parameter: %d", parameter);
  [self setNeedsDisplay:YES];
}

尽管视图本身不会重绘,但我确实收到了有关设置新参数的消息。欢迎任何想法!

4

4 回答 4

5

通常的语法是: [self setNeedsDisplay:YES],尽管我认为这意味着同样的事情。您是在实现该- (void)drawRect:(NSRect)rect方法,还是使用drawRect:超类的方法?

于 2008-11-29T08:14:49.230 回答
2

对于在使用NSOpenGLView子类时遇到此问题的任何人,您可能会忘记[[self openGLContext] flushBuffer]drawRect:.

于 2009-12-08T07:17:33.433 回答
2

有时原因很简单:文件的所有者与 UIView 对象没有联系。即它的插座设置不正确。使用 IB、ctrl 按钮和拖动方法 :)

于 2011-05-17T10:25:54.843 回答
0

在 iOS 6 中没有这样的函数可以调用:setNeedsDisplay:YES. 我遇到了同样的问题,并提供了这个解决方案:https ://stackoverflow.com/a/15027374/1280800 。

希望它会有所帮助。

于 2013-02-22T15:25:27.117 回答