gpt4 book ai didi

macos - 如何阻止 NSTableView 保存当前滚动位置?

转载 作者:行者123 更新时间:2023-12-03 16:17:50 26 4
gpt4 key购买 nike

在我的应用程序中,我在 NSViewController 中有一个 NSTableView,并使用 NSArrayController 提供内容。

它工作得很好,但是,当我滚动到桌面 View 的某个位置,退出应用程序并重新启动它时,它将恢复最后的滚动位置。我不喜欢这种行为,我希望它保持在顶部。

我尝试在 NSTableView 上将 setAutosaveTableColumns 设置为 NO,这似乎不是我需要的选项。它仍然按旧方式工作。

是否有任何选项可以关闭此功能?

最佳答案

滚动位置由 NSScrollView 存储,自 OS X Lion 起,它实现了 encodeRestorableStateWithCoder:/restoreStateWithCoder:
(Interface Builder 自动将表格 View 包装在 NSScrollViewNSClipViewNSTableView 层次结构中)。

要获得在应用程序重新启动后滚动到顶部的 ScrollView ,您有多种选择:

  • 在 Interface Builder 中关闭整个窗口的 View 状态恢复: enter image description here
  • 子类 NSScrollView 并使用空实现覆盖 encodeRestorableStateWithCoder: (不要忘记将其设置为 IB 中表格 View 实例的类):
  • 应用重新启动后以编程方式滚动到顶部:

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    {
    [[self.scrollView contentView] scrollToPoint:NSMakePoint(0.0, 0.0)];
    [self.scrollView reflectScrolledClipView:[self.scrollView contentView]];
    }

我个人会选择方法 3,因为关闭整个窗口的状态恢复可能会破坏用户期望的某些行为,而方法 2 is against Apple's recommendation在子类化 NSView 时调用 [superencodeRestorableStateWithCoder:]

关于macos - 如何阻止 NSTableView 保存当前滚动位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com