• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Bindings and KVO of View objects
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bindings and KVO of View objects


  • Subject: Re: Bindings and KVO of View objects
  • From: Quincey Morris <email@hidden>
  • Date: Tue, 19 May 2009 16:01:18 -0700

On May 19, 2009, at 14:18, Stuart Malin wrote:

As my understanding of Bindings is that they implement using KVO and KVC, then is it safe to assume that if an object has a bindable property, then that property should be observable with KVO, yes?

No. The name of the binding is *not* the same as the name of any property of the bound object. For example, most controls have a "value" binding, but controls don't have a "value" property.


The assumption underlying your assumption, that there is some sort of direct correlation between a binding and an underlying property, is also false. Typically, bindings will be implemented so as to use one or more properties of the bound object, but that's not a requirement (except perhaps in a looser conceptual sense).

My specific concern is with NSSegmentedControl, which has a bindable property "selectedIndex". I am trying to add an observer for this property (using -addObserver: on an instance). Alas, I am not getting an observer event (i.e, invocation of my - observerForKeyPath:... method) when I change the segmented control in the U/I. So, either I have done something incorrectly in setting up the observer, or this is not an observable property.

Pendantically, there's no such thing as a "bindable property". NSSegmentedControl has a binding named "selectedIndex" and a property named "selectedSegment" which (presumably) the binding uses. So, you should observe the "selectedSegment" property, not the (non-existent) "selectedIndex" property.


Incidentally, the relationship between the binding and the property is an implementation detail. It's not impossible that the "selectedIndex" binding might use a privately-known property, and that "selectedSegment" is derived from that private property in a non-KVO- compliant way. It's not impossible, therefore, that observing "selectedSegment" doesn't work, regardless of bindings.

Finally, it usually indicates a design flaw if you're trying to observe a property of a user interface object. It's almost always better to observe the value that the UI object is bound to. (There are valid exceptions, though.)


_______________________________________________

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


  • Follow-Ups:
    • Re: Bindings and KVO of View objects
      • From: Kyle Sluder <email@hidden>
References: 
 >Bindings and KVO of View objects (From: Stuart Malin <email@hidden>)

  • Prev by Date: Re: When init returns nil does it cause a leak
  • Next by Date: Re: Bindings and KVO of View objects
  • Previous by thread: Bindings and KVO of View objects
  • Next by thread: Re: Bindings and KVO of View objects
  • Index(es):
    • Date
    • Thread