【发布时间】:2021-11-27 08:54:51
【问题描述】:
根据 Apple Docs,当您更改 NSTableView 的自动保存名称时,它将从 UserDefaults 中读取该自动保存名称的列宽并相应地调整列。
我似乎无法让它在以下情况下工作:
用户可以选择两个选项之一来在 tableView 中显示更改或会话。 Changes 与 Sessions 有不同的列。
因此,为了在不使用两个单独的 NSTableView 的情况下实现这一点,我认为当用户更改选择时,我可以简单地删除现有列并将它们替换为所需的列,然后将自动保存名称设置为“ChangesTableView”或“SessionsTableView”。然后根据 Apple 文档,tableView 将读取保存的设置并调整列。
这似乎成功了一半。
如果我在设置 autosavename = "Name1" 后关闭应用程序并使用 autosavename = "Name2" 重新启动应用程序,则该表将没有保存的列数据。
如果我将 autosavename 更改为“Name1”,之前保存的位置将被恢复。
但是,如果我现在将名称更改为“Name2”并更改列位置并使用 autosavename =“Name2”重新启动应用程序,那么新位置将恢复。
但是,如果我现在再次更改 autosavename = "Name1",则之前从 "Name1" 中保存的位置不再存在,并且列恢复为默认值。
似乎当您更改自动保存名称时,旧名称下的设置会被删除。因此,您似乎无法以两个不同的自动保存名称保存位置。
文档说,如果您将 autosavename 设置为 NIL,那么之前保存的所有数据都将被清除。没有提到如果您更改自动保存名称,还会从任何以前使用的自动保存名称中清除数据。
任何人对此都有特定的解决方案,除了用选项卡式视图或其他东西覆盖两个 NSTableView。
【问题讨论】:
-
不支持对两个表使用一个表视图。简单的解决方案:两个表视图并隐藏一个。 DIY 解决方案:自己保存和恢复列宽。
标签: macos nstableview