setNeedsDisplay not working?
-
11-07-2019 - |
Question
I have a problem redrawing a custom view in simple cocoa application. Drawing is based on one parameter that is being changed by a simple NSSlider. However, although i implement -setParameter: and -parameter methods and bind slider's value to that parameter in interface builder i cannot seem to make a custom view to redraw itself.
The code that does redrawing is like this:
- (void)setParameter:(int)newParameter {
parameter = newParamter;
NSLog(@"Updated parameter: %d", parameter);
[self setNeedsDisplay:YES];
}
I DO get the message about setting the new parameter although the view doesn't redraw itself. Any ideas are welcome!
Solution
The usual syntax is: [self setNeedsDisplay:YES]
, although I would assume that that means the same thing. Are you implementing the - (void)drawRect:(NSRect)rect
method, or using the drawRect:
method of your superclass?
OTHER TIPS
For anyone that has this problem while using an NSOpenGLView
subclass, you might be forgetting to use [[self openGLContext] flushBuffer]
at the end of drawRect:
.
Sometimes reason can be very simple: File's owner has no connection to UIView object. i.e. it's Outlet is not setup properly. Use IB, ctrl button and drag method :)
In the iOS 6 there isn't such function to call: setNeedsDisplay:YES
. I've got the same problem, and came with this solution: https://stackoverflow.com/a/15027374/1280800 .
Hope it will help.