• 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
YACCOB - Yet Another Custom Cell OutlineView Binding problem
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

YACCOB - Yet Another Custom Cell OutlineView Binding problem


  • Subject: YACCOB - Yet Another Custom Cell OutlineView Binding problem
  • From: Paolo Ottanà <email@hidden>
  • Date: Fri, 11 Apr 2008 00:50:43 +0200

Hi everybody,
I am stuck with a (maybe trivial) problem, but I did not find a solution suitable for my case in the old messages and on the net.
My situation is this: I want to use a custom button cell inside an OutlineView to add some color and text to the basic checkbox and draw a set of Node objects. I would like to use a treecontroller to manage my Nodes array and use a binding to link the cell value to a Node property containing data like: color, enabled value, title string, title string color, etc...


Trying to understand what to do I implemented this:

I subclassed NSButtonCell (MyCustomCell) and redefined setRepresentedObject: and setObjectValue:

I created in IB an NSOutlineView, dragged in a NSButtonCell and set the cell class to MyCustomCell. I set OutlineView delegate to MyDocument and implemented in MyDocument outlineView:willDisplayCell:forTableColumn:item:

I created a Node class with methods isLeaf: children: childrenCount: and some custom properties (KVC compliant) like nodeName(NSString) nodeColor(NSColor), nodeEnabled(bool).

I filled with some Node a NSMutableArray inside MyDocument and binded it to a NSTreeController ContentArray via IB

Then I binded the tablecolumn Value to the TreeController using the key "nodeEnabled". All worked fine and the normal button cells were drawn correctly.

Then I tried to bind to the column the key "nodeColor". My idea is to intercept the NSColor as it is set inside the cell and use it to do some drawing.

The problem is that:
in MyCustomCell setRepresentedObject: is called only once with object nil (not the displayed Node)
setObjectValue is called multiple times (once per visible cell) but object value is always nil (not the color)
outlineView:willDisplayCell:forTableColumn:item: is called multiple times but cell seems not a MyCustomCell instance but a simple NSButtonCell. Calling [item representedObject] seems to return a valid ptr to the displayed node, BUT after exiting the method I get an assertion "Cannot create BOOL from object NSCalibratedRGBColorSpace 1 1 1 1 of class NSCachedRGBColor" and the OutlineView is not displayed at all. I surely miss some basic understanding of cells/tables and some methods implementation... :-(


How can I bind correctly a Node property (or a dictionary containing more properties) to my custom cell inside the Outline view so that I can use the properties to do some drawing/coloring? Is it possible using bindings or I am totally out of the right path?

Sorry if I am not so clear but I am a total Cocoa newby.

Thanks in advance for any help or any pointer to interesting documents...

Paull
_______________________________________________

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


  • Prev by Date: Making use of Core 2 features without 64bit addressing
  • Next by Date: Re: Making use of Core 2 features without 64bit addressing
  • Previous by thread: Re: Making use of Core 2 features without 64bit addressing
  • Next by thread: how should I go about downloading files
  • Index(es):
    • Date
    • Thread