On Oct 10, 2010, at 22:31:47, Quincey Morris wrote:

> One way or another, you're going to have to come up with code to handle both 
> directions of frame change: model-to-view  and view-to-model. One approach is 
> to use KVO observance (via [view bind:@'frame" toObject:vp 
> withKeyPath:@"frame" options:0] if you really want to -- note the change of 
> direction) for one direction, and have a controller object (such as a view 
> controller or window controller) observe frame-change notifications from the 
> view and update the model property directly.

Thanks for the attempt to explain this all to me. I wish I were smart enough to 
understand it. I had assumed that -bind:... was short for "establish KVO in two 
directions," but clearly that's not the case. I thought that if the two 
properties were KVC/KVO-compliant, things would just work.

Since each plug-in must subclass NSViewController in order to provide a view to 
display, I can provide a custom NSViewController subclass for them to use, and 
put whatever code is necessary into that. But it's not clear to me exactly what 
I would do, then.

The SimpleBindingsAdoption_02 sample app does this:

    NSObjectController *controller = [[[NSObjectController alloc] init] 
autorelease];
    [controller bind:@"contentObject" toObject:self withKeyPath:@"track" 
options:nil];
    
    [textField bind:@"value" toObject:controller 
withKeyPath:@"selection.volume" options:nil];
    [slider bind:@"value" toObject:controller withKeyPath:@"selection.volume" 
options:nil];

NSViewController has a "representedObject" property that it claims can be used 
for binding, I wonder if I can point that at the plug-in instance and bind 
through that property. Guess it's worth a try...

        [view bind: @"frame" toObject: controller withKeyPath: 
@"representedObject.frame" options: nil];

And, nope. Now the value in the model puts the view in the specified place, but 
changing the view's frame does not propagate the change to the model. Does that 
mean that -[NSView frame] is not KVC-compliant, or that I still need custom 
code somewhere to create the binding?

-- 
Rick

_______________________________________________

Cocoa-dev mailing list ([email protected])

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

This email sent to [email protected]

Reply via email to