Re: getting started on bindings => problems with NSMutableArray - NSArrayController - NSTableView
Re: getting started on bindings => problems with NSMutableArray - NSArrayController - NSTableView
- Subject: Re: getting started on bindings => problems with NSMutableArray - NSArrayController - NSTableView
- From: Sean Kline <email@hidden>
- Date: Mon, 21 Sep 2009 12:10:16 -0400
It does not appear that you have a dataSource. You need to implement:
- (int)numberOfRowsInTableView:(NSTable View *)aTableView ;
- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
- Sean
On Sun, Sep 20, 2009 at 4:51 PM, Colin Howarth <email@hidden> wrote:
> Hi all,
>
> I've tried various searches, Apple documentation and example code, but my
> code stubbornly refuses to work :-(
>
> I'm trying to do this in conjunction with Interface Builder...
>
>
> I have an instance of an NSMutableArray of LensElements in my AppDelegate.
>
> I have an NSArrayController in the MainMenu.xib IB window.
>
> My main window has an NSTableView.
>
> I'd like the NSTableView to display the data of the array of LensElements.
> Later I'd like to be able to drag elements within my custom LensView, and
> have this update the TableView. Also, changing data within the TableView
> should update the LensView. But, for now, I'd be happy if the Table would
> simply display the data. (grrrr)
>
> It's really frustrating. The examples I find either don't seem to fit what
> I'd like to do (NSMutableArray - NSArrayController - NSTableView). And/or
> they use ancient versions of IB (which keeps changing). Or they don't use IB
> at all. Or, like me, they just mention some settings, but ignore others -
> like "Table View Attributes >> Control >> State: Enabled" or "Array
> Controller Attributes >> Object Controller >> Editable (yes)". Sometimes I
> see columns bound. Sometimes ControllerKey is "selections" sometimes it's
> "arrangedObjects". And nothing works. The documentation only makes sense
> when you know exactly what it's talking about. :-(
>
>
> Please unconfuse me. I only need to get "into" this once, then I'll be OK.
> Honest.
>
>
>
> In Interface Builder:
>
> ###################################################################
>
> Trace App Delegate Connections:
> Referencing Bindings:
> elements --- Content Array / Array Controller
>
>
> ###################################################################
>
> Table Column (position) Attributes:
> Table Column:
> Title: Z position
> Identifier: position
>
> Table Column (position) Bindings:
> Value:
> Bind To: Array Controller
> Controller Key: selection // tried
> arrangedObjects
> Model Key Path: position
>
> Table Column (position) Connections:
> Bindings:
> Value -- Array Controller / selection.position
>
> ###################################################################
>
> Array Controller Attributes:
> Object Controller:
> Mode: "Class"
> Class Name: "LensElement"
>
> Array Controller Bindings:
> Controller Content:
> Bind To: Trace App Delegate
> Model Key Path: elements
>
> Array Controller Connections:
> Bindings:
> Content Array --- Trace App Delegate / elements
> Referencing Bindings:
> selection.position --- Value / Table Column (position)
> selection.radius --- Value / Table Column (radius)
>
> ###################################################################
>
>
> Here are the snippets of code (#imports etc included).
>
> The app compiles without errors or warnings and runs fine. All my views and
> buttons etc show up fine, but the NSTableView doesn't show any content.
> Well, it did once, when there was only one LensElement in the array :-) I
> then added another, as you can see below, and it stopped showing anything. I
> removed it again and it hasn't worked since... (???)
>
>
> ### LensElement.h ####################################################
>
> @interface LensElement : NSObject
> {
> NSNumber *position;
> NSNumber *radius;
> }
>
> @property (copy, nonatomic) NSNumber *position;
> @property (copy, nonatomic) NSNumber *radius;
>
> @end
>
> ### LensElement.m ####################################################
>
> @implementation LensElement
>
> @synthesize position;
> // creates the proper getter and
> setter methods?
> @synthesize radius;
>
> @end
>
> ### TraceAppDelegate.h# ###############################################
>
> @interface TraceAppDelegate : NSObject <NSApplicationDelegate> {
> NSWindow *window;
> NSMutableArray *elements;
> NSArrayController *ctrlr;
> }
>
> @property (assign) IBOutlet NSWindow *window;
> @property (assign) NSMutableArray *elements;
>
> @end
>
> ### TraceAppDelegate.m ###############################################
>
> @implementation TraceAppDelegate
>
> @synthesize window;
> // creates the proper getter and setter
> methods?
> @synthesize elements;
>
> - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
>
> LensElement *element = [[LensElement alloc] init];
> // this is just for testing...
> LensElement *element2 = [[LensElement alloc] init];
>
> elements = [[NSMutableArray alloc] initWithObjects:element,
> element2, nil];
>
> [element setValue: [NSNumber numberWithDouble: 5.0] forKey:@
> "position"];
> [element setValue: [NSNumber numberWithDouble: 10.0] forKey:@
> "radius"];
>
> [element2 setValue: [NSNumber numberWithDouble: 6.0] forKey:@
> "position"];
> [element2 setValue: [NSNumber numberWithDouble: -15.0] forKey:@
> "radius"];
>
> NSLog(@"pos: %@", [[elements objectAtIndex:1] valueForKey:@"position"]
> ); // prints 6.0, as it should
>
> ...
> ####################################################################
> _______________________________________________
>
> 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