• 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
NSButtonCell binds only readonly; Non-bool bindings OK.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

NSButtonCell binds only readonly; Non-bool bindings OK.


  • Subject: NSButtonCell binds only readonly; Non-bool bindings OK.
  • From: Jerry Krinock <email@hidden>
  • Date: Thu, 23 Apr 2009 11:08:01 -0700

In a table view, I have a couple of "user-defined" columns which the user can click on the header of to pop up a menu of 15 attributes, choosing one for the column to display/edit. Most of the attribute types are strings, several are boolean and one is an array. In my table column's subclass, -dataCellForRow: returns a text field cell, button cell (checkbox) or token field cell, depending on this attribute type.

All this works pretty nice, except that, only when I use bindings, the button cell behavior is readonly. When I click such a checkbox, it flashes, but does not change state. The getter is invoked several times, but the setter is never invoked as long as the data cell is a checkbox. For the text and array attribute types, the setter is invoked and works as expected. In another table which does not use bindings, all attribute types including boolean work fine.

(In order to handle the user-defined key, I have bound these table columns to a key such as 'userDefined0', and then implemented in my "record" class, for example, -userDefined0 and -setUserDefined0:. These in turn dig up the current user-defined key for the column and pass the message thru to the appropriate "regular" accessor.)

I have NSLogged information about the table column in the getter (which always works) and find everything to be as expected when I click the checkbox: The column is editable, -infoForBinding indicates that it is bound to the expected array controller with keyPath arrangedObjects.userDefined0, and the observed object is some kind of NSMutableDictionary, which I believe is normal, some kind of proxy.

Also, I do not see any KVO or KVC complaints in the console log.

I've read lots in the list archives about binding button cells but nothing like this. I was wondering if maybe I needed to "re-bind" the column when the attribute type changed from, say, string to boolean, but the problem occurs even if the table is initialized with the boolean attribute type. And it doesn't seem like this should be necessary anyhow since the widely-used -dataCellForRow: creates and returns a new cell every time data is reloaded. Columns seem to be quite adept at finding their cell.

Sincerely,

Jerry Krinock

_______________________________________________

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: NSButtonCell binds only readonly; Non-bool bindings OK.
      • From: Kyle Sluder <email@hidden>
  • Prev by Date: Re: Dividing NSView to subviews
  • Next by Date: How do I find this compile error?
  • Previous by thread: Strange problem with NSNotificationCenter and NPAPI plugin
  • Next by thread: Re: NSButtonCell binds only readonly; Non-bool bindings OK.
  • Index(es):
    • Date
    • Thread