Erik,
I've only made a custom subclass of NSArrayController once and that was a long 
time a go to do some custom thing that I don't remember now. 
Normally I add an array to the appropriate view controller that has the table 
data in it and then bind the NSArrayController's content to that array. Then 
for the table I bind the columns to arrayController.arrangedObjects.someKey. 
Unless I need to do some sort of custom work when adding or removing objects I 
make add and remove buttons that connect directly to the methods of 
NSArrayController. As long as I don't make any changes to the array in the view 
controller behind KVO's back the binding magic takes over and I don't need to 
make a data source at all and the only delegate stuff I have to deal with is 
stuff like selecting and sorting/re-sorting. Make sure your array controller 
prepares content.

Hope that helps,
Mike Swan
ETCP Certified Entertainment Electrician
http://www.theMikeSwan.com

"Change itself is not painful it is resistance to change that causes pain."



On 3 Aug, 2012, at 1:16 AM, cocoa-dev-requ...@lists.apple.com wrote:

> Message: 12
> Date: Thu, 02 Aug 2012 22:16:20 -0700
> From: Erik Stainsby <erik.stain...@roaringsky.ca>
> To: "cocoa-dev@lists.apple.com (Apple)" <cocoa-dev@lists.apple.com>
> Subject: Very basic table binding blind spot
> Message-ID: <20c1a352-8903-4727-a8f7-f1cc585ef...@roaringsky.ca>
> Content-Type: text/plain; charset=windows-1252
> 
> 
> 
> I do so wish there was a Complete Idiot's Guide to Cocoa Table Bindings … The 
> very flexibility which I know must be their great virtue tends to obscure the 
> clear path from my sight more often than not.  Forest, trees, trees, forest … 
> Oh! Something shiny! 
> ---
> 
> So tonight I have an NSArrayController (RSTableArrayController) which I have 
> populated with dictionary objects of the form:
> 
> [self.content addObject:[NSDictionary dictionaryWithObjects: [NSArray 
> arrayWithObjects: key, [mvo valueForKey:key],nil] forKeys:[NSArray 
> arrayWithObjects:@"label",@"value",nil]]];
> 
> 
> 
> For this simple two column data I have a two column table, using Table View 
> Cells (I'm going to have visual objects in place of the 'label' later on).
> I have set the identifier for the tableView columns very imaginatively to 
> "label", and "value". 
> The array controller is also < NSTableViewDataSource, NSTableViewDelegate >. 
> I have implemented the following two delegate methods:
> 
> - (NSInteger) numberOfRowsInTableView:(NSTableView *)aTableView {
>       return self.content.count;
> }
> 
> - (id)                        tableView:(NSTableView *)aTableView     
> objectValueForTableColumn:(NSTableColumn *)tableColumn 
> row:(NSInteger)rowIndex {
>       NSString * identifier = [tableColumn identifier];
>       NSDictionary * dict = [self.content objectAtIndex:rowIndex];
>       NSLog(@"%s- [%04d] %@: %@", __PRETTY_FUNCTION__, __LINE__, 
> identifier,[dict valueForKey:identifier]);
>       return [dict valueForKey:identifier];
> }
> 
> In the nib, I have an ArrayController object of the class described above 
> RSTableArrayController. It is wired up as the delegate and dataSource for the 
> tableView. 
> 
> 
> And here is where I get lost time and again, tracing the appropriate path to 
> the content and it's constituent data parts and binding them to the 
> appropriate element in the tableView.
> 
> » Scroll View
>       » Table View
>               » Table Column
>                       » Table Cell View
>                               » Static Text
>                                        Text Field Cell
> 
> Given that the delegate method is called  -[tableView: 
> objectValueForTableColumn: row:]  I should expect to bind the 
> arrayController's objectValue in the Bindings Inspector to the ?node?  in the 
> object browser.  Do I need to do more than get that right?  
> 
> ~ Erik, 
> currently batting .034 in the bindings league ... 
> 
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to