在我的应用中,NSTableView
NSViewController
NSArrayController
,setAutosaveTableColumns
提供内容。
但是,当我滚动到tableview的某个位置,退出app并重新启动它时,它会很有效,它将恢复最后一个滚动位置。我不喜欢这种行为,我希望它保持在最顶层。
我在NSTableView上尝试{{1}}为NO,似乎不是我需要的选项。它仍然是旧的方式。
是否可以选择关闭此功能?
答案 0 :(得分:5)
滚动位置由NSScrollView
存储,自OS X Lion起实施encodeRestorableStateWithCoder:
/ restoreStateWithCoder:
。
(Interface Builder自动将表格视图包装在NSScrollView
→NSClipView
→NSTableView
层次结构中)。
要获得在重新启动应用后滚动到顶部的滚动视图,您有几个选项:
NSScrollView
并使用空实现覆盖encodeRestorableStateWithCoder:
(不要忘记将其设置为IB中的表视图实例的类):在重新启动应用后,以编程方式滚动到顶部:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[self.scrollView contentView] scrollToPoint:NSMakePoint(0.0, 0.0)];
[self.scrollView reflectScrolledClipView:[self.scrollView contentView]];
}
就个人而言,我会选择方法3,因为关闭整个窗口的状态恢复可能会破坏用户期望的某些行为,并在子类化[super encodeRestorableStateWithCoder:]
时调用NSView
方法2 is against Apple's recommendation }。