Re: needsDisplay and subviews
Re: needsDisplay and subviews
- Subject: Re: needsDisplay and subviews
- From: Jeremy Hughes <email@hidden>
- Date: Fri, 10 Mar 2017 12:38:36 +0000
> On 9 Mar 2017, at 18:32, corbin dunn <email@hidden> wrote:
>
>>
>> On Mar 8, 2017, at 8:46 AM, Jeremy Hughes <email@hidden> wrote:
>>
>> If needsDisplay is set to true for an NSView, does that also cause subviews to be redrawn?
>>
>> I’ve seen conflicting statements about this, but haven’t found anything in Apple’s documentation.
>
> Just to be clear: if you want a view to be redrawn you should call setNeedsDisplay on that view. That’s really the bottom line. There are some cases where AppKit will redraw subviews when a parent view is invalidated, but you should not depend on this!
Thanks for being clear!
> I also don’t recommend things like this:
>
>> override var needsDisplay: Bool
>> {
>> willSet
>> {
>> for view in subviews
>> {
>> view.needsDisplay = newValue
>> }
>> }
>
>
> Instead, it is better if your subviews invalidate themselves when their state changes.
In this case I have a view that is broken up into subviews but should really be treated as a single view as far as redraws are concerned. When the model object for the view changes, the entire view needs to be redrawn. The controller for this view is not aware of each individual subview or what kind of view it is dealing with - it’s actually dealing with a more general view that is a superclass of different kinds of specific views. Also, the views aren’t aware of model states, so they can’t invalidate themselves.
The willSet override isn’t a general override that will cause all views to redraw whenever a superview is redrawn. It’s a specific override for a particular view that is really a cluster of subviews and which needs all of its subviews to be redrawn whenever it is invalidated.
Jeremy
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden