Re: Ensuring no selection in a table view
Re: Ensuring no selection in a table view
- Subject: Re: Ensuring no selection in a table view
- From: Kyle Sluder <email@hidden>
- Date: Wed, 29 Dec 2010 18:14:46 -0800
On Wed, Dec 29, 2010 at 5:11 PM, John Brownie <email@hidden> wrote:
> On Thu Dec 30 2010 09:56:18 GMT+1000 (PGT) Kyle Sluder wrote:
>
>> Is it propagating the selection from the controller? IOW, just because
>> you have set avoidsEmptySelection=NO doesn't mean the controller will
>> *prefer* an empty selection.
>
> I don't understand this. How does the controller propagate a selection? How
> does it get a selection in the first place? Do I need to use something like
> setSelectedObjects: for the controller with an empty array? (Tried that,
> didn't change anything.)
Instances of NSArrayController expose a selectedObjects property. If
all of its columns are bound to the same NSArrayController,
NSTableView autobinds its selection binding to the controller's
selectedObjects property. This is what makes zero-code binding-based
interfaces possible.
> Just to be clear, whenever the window is shown, I set the contents of the
> array to be correct for the current context. I used deselectAll: in the
> routine that set the array, but it didn't seem to have any effect.
I created a new demo project and wasn't able to reproduce this
behavior. With avoidsEmptySelection=YES, calling -setContent: on the
array controller causes its selection to change as the window is
constructed. If I set avoidsEmptySelection=NO in IB, then this doesn't
happen.
>
> - (void)setStateStack:(NSArray *)newStack
> {
> [newStack retain];
> [stateStack release];
> stateStack = newStack;
> [stateStackTable deselectAll:self];
> NSArray *tempArray = [NSArray array];
> [stateStackController setSelectedObjects:tempArray];
> [tempArray release];
This is redundant, as I'm sure you're aware. But more importantly, how
are you notifying the controller of its new content? I see no call to
-setContent: here.
> [stateStackScroll setNeedsDisplay:YES];
This is unnecessary. Once the table view gets wind that its data has
been updated, it will call -setNeedsDisplayInRect: on itself.
--Kyle Sluder
_______________________________________________
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