Re: NSCollectionView NSArrayController bindings from outer hell
Re: NSCollectionView NSArrayController bindings from outer hell
- Subject: Re: NSCollectionView NSArrayController bindings from outer hell
- From: Mike Abdullah <email@hidden>
- Date: Thu, 24 Dec 2009 10:38:58 +0000
On 24 Dec 2009, at 05:53, Nicolas Berloquin wrote:
> Hi !
>
> I must have killed the gods of array bindings in a previous life,
> but I'm pulling my hair (or whatever's left), and, even though I
> thought I got I, well, I really don't.
>
> I'm trying to do something quite simple.
> I'd like to display a series of images with a label inside an
> NSCollectionView.
> Whatever I do, the collectionview remains empty (even though I can see the
> nice
> checkered background (since I set up default layout rows/cols) which
> reflects the size
> of my customized item view).
Why not use IKImageBrowserView? It's a perfect match for grids of images with titles. And faster too.
>
> In a nib file that has a couple windows, the File's Owner is an
> NSWindowController
> of mine. Right now, it concentrates most of the controlling.
> The NSMutableArray which contains the images and strings is a property of
> the windowController.
> I created an NSArrayController, bound to the File's Owner, with the model
> key path to the name
> of my array (checked spelling etc).
> I created an NSCollectionView and set it up like this :
> - content is bound to the arrayController, and controller key is
> "arrangedObjects".
> - the item prototype is the NSCollectionViewItem that got created
> automatically.
> - for the NSCollectionViewItem, its view is the auto-created view that I
> customized to add an NSImageView and a label.
> Now, I tried with and without setting the fields in the "Attributes"
> inspector. Since the View is inside the same nib as
> the NSCollectionViewItem, I think I can leave this blank, since the outlet
> connects them already.
>
> - for the view itself (that should be drawn inside the collectionview), the
> NSTextField (not the cell) is bound
>
> to the Collection View Item, and the model key path is set to
> "representedObject._imageUID". (_ImageUID is a
>
> property of the content of my NSMutableArray. To make it short, I add simple
> class instances that have two
>
> fields, NSImageView *_image, NSString *_imageUID)
>
> - the NSImageView is bound the same way, but to representedObject._image.
>
>
>> From what I read all over the net, this should be one way to do it...
>
> So, now on to the model side. Maybe my array isn't observed as being
> updated.
>
> I tried a few things...
>
> with and without declaring the NSMutableArray as a property, and assigning
> it
>
> through a setter in windowControllerDidLoadNib.
>
> I use insertObject: atIndex: to add elements to the array. And I made sure
> that I add them
>
> from the main thread (performOnMainThread or similar calls when necessary).
>
> I traced the content of the NSCollectionView from the debugger, and it seems
> that it
>
> doesn't see any of that. But maybe I shouldn't worry about what I see ?
>
> The collectionView shows :
>
> _content has 0 objects
>
> _displayedItems has 0 objects
>
>
> I tried setting the NSCollectionView's content by hand, (with setContent:
> myArray) but
>
> then I get lots of weird warnings :
>
> *Could not connect the action orderFrontStandardAboutPanel: to target of
> class NSCollectionViewItem*
>
> *Could not connect the action hide: to target of class NSCollectionViewItem*
>
> Could not connect the action terminate: to target of class
> NSCollectionViewItem
>
> *Could not connect the action hideOtherApplications: to target of class
> NSCollectionViewItem*
>
> *Could not connect the action unhideAllApplications: to target of class
> NSCollectionViewItem*
> *
> *
> And I also tried to send setNeedsDisplay: YES to the collectionView, just in
> case...
>
> So, if anyone has any suggestion, I'd be really glad to hear them. I really
> don't understand what
> goes wrong. Somehow, this technology, "It simply doesn't work"... :)
>
>
> thanks !
> _______________________________________________
>
> 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
_______________________________________________
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