Subclassed NSTextField can't bind backgroundColor to NSCollectionViewItem

  • I'm trying to simulate an NSTableView using an NSCollectionView
    because [[(NSTableView *)tv animator] reloadData] won't work.  I
    thought it would be more likely I could animate an NSCollectionView.
    I have at least one NSTextField in my CollectionViewItem NSView where
    I want to be able to control the background color.

    Since the text of the NSTextField is bound in Interface Builder to the
    NSCollectionViewItem, I thought that to bind to the backgroundColor in
    my NSTextField subclass, I could put the following method in its
    initWithCoder method.  The "cvi" variable is an IBOutlet connected in
    IB to the NSCollectionViewItem.

    [self bind: @"backgroundColor"
         toObject:cvi
        withKeyPath:@"representedObject.backgroundColor"
         options:nil];

    The problem is that when NSTextField initWithCoder is called, cvi is
    nil.

    Is there a workable approach? And is there a good reason why
    backgroundColor shouldn't be bindable in Interface Builder?
  • Just override the bind method in the NSTextField subclass.  Then when
    it is called to bind to "value", add a binding to "backgroundColor."

    On Dec 1, 2007, at 2:19 AM, David Carlisle wrote:

    > I'm trying to simulate an NSTableView using an NSCollectionView
    > because [[(NSTableView *)tv animator] reloadData] won't work.  I
    > thought it would be more likely I could animate an
    > NSCollectionView.  I have at least one NSTextField in my
    > CollectionViewItem NSView where I want to be able to control the
    > background color.
    >
    > Since the text of the NSTextField is bound in Interface Builder to
    > the NSCollectionViewItem, I thought that to bind to the
    > backgroundColor in my NSTextField subclass, I could put the
    > following method in its initWithCoder method.  The "cvi" variable is
    > an IBOutlet connected in IB to the NSCollectionViewItem.
    >
    > [self bind: @"backgroundColor"
    > toObject:cvi
    > withKeyPath:@"representedObject.backgroundColor"
    > options:nil];
    >
    > The problem is that when NSTextField initWithCoder is called, cvi is
    > nil.
    >
    > Is there a workable approach? And is there a good reason why
    > backgroundColor shouldn't be bindable in Interface Builder?
previous month december 2007 next month
MTWTFSS
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Go to today