Re: How to save and restore NSScrollView scroll position?
Re: How to save and restore NSScrollView scroll position?
- Subject: Re: How to save and restore NSScrollView scroll position?
- From: Ashley Clark <email@hidden>
- Date: Fri, 2 Apr 2010 20:57:08 -0500
On Apr 2, 2010, at 5:33 PM, James Walker wrote:
> On 4/2/2010 1:47 PM, Quincey Morris wrote:
>> On Apr 2, 2010, at 13:15, James Walker wrote:
>>
>>> I have an NSScrollView containing an NSTableView whose content is
>>> managed by an NSArrayController. I have a situation where I need to
>>> temporarily set the array controller's content to nil, mess with the
>>> content, and then hand it back to the array controller, and I'd like to
>>> preserve the scrolling position. I thought I could just get the value of
>>> the NSScroller before, and set it back after, but that results in the
>>> scroll bar being out of sync with the actual scrolling state of the
>>> table. How can I do it?
>>
>> Maybe something like this (typed in Mail):
>>
>> clipOrigin = tableView.enclosingScrollView.contentView.bounds.origin;
>>
>> ... change the table then put it back again ...
>>
>> [tableView.enclosingScrollView.contentView scrollToPoint: clipOrigin];
>>
>> This first line is kind of a guess, based on the documentation for 'scrollToPoint:'.
>
>
> When I tried that, the table was in the right position, but the scroll bar was wrong. If I do BOTH your trick and what I originally tried with the NSScroller value, then it seems to work. Thanks.
You can manually update the scrollers position but there's a method on NSScrollView that will do it for you based on the content view's origin.
- (void)reflectScrolledClipView:(NSClipView *)aClipView
so, [[tableView enclosingScrollView] reflectScrolledClipView:[[tableView enclosingScrollView] contentView]]
Ashley
_______________________________________________
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