问题标签 [nssplitviewcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
156 浏览

xcode - 无法更改 NSSplitView 上的委托

我有一个故事板,其中包含一个主窗口(具有相应的MainWindowController类)和一个主视图(一个NSSplitViewController,具有相应的MainViewController类)。对于某些功能,我试图将NSSplitView视图中包含的委托设置为MainWindowController类。

在没有任何 IB 链接的情况下,NSSplitView委托已设置为MainViewController应用程序启动时。我能够获得对 的引用MainWindowController,但是当我尝试将委托设置为窗口控制器(确实实现NSSplitViewDelegate)时,我得到以下信息:

如果我尝试将委托设置为nil.

有谁知道为什么会这样,设置委托是否有限制,以及是否有办法使用 IB 将视图中的项目委托设置为另一个控制器?

谢谢。

0 投票
2 回答
537 浏览

macos - NSSplitViewController 导致包含的视图在窗口角上绘制

我正在尝试使用 Cocoa 创建一个小的 Finder 克隆。我将一个源列表表视图(用作侧边栏)和一个标准表视图放置在NSSplitViewNSSplitViewController. 不幸的是,当我运行它时,标准表格视图的白色背景被绘制在窗口的右下角,导致一个非圆角: 画在右下角

我可以通过不使用NSSplitViewController标准 nib 文件或情节提要来避免该问题,以获得所需的结果:

正确绘制,尽管没有 NSSplitViewController

但是……我真的很想用NSSplitViewController。有什么办法可以防止这种情况发生吗?

这是带有屏幕截图项目的 Xcode 工作区。

0 投票
1 回答
272 浏览

xcode - 将 NSSplitViewController 连接到窗口

我想将我的 NSSplitViewController 连接到 Xcode 界面生成器故事板中的窗口:

在此处输入图像描述

我怎样才能做到这一点?

0 投票
1 回答
78 浏览

macos - 如何修复它,以便当我将 NSSplitViewController 添加到情节提要时,我的窗口不会折叠?

当我将 NSSplitViewController 添加到基于文档的故事板时,如下所示:

在此处输入图像描述

它不会尊重我的最小内容大小并立即崩溃。为什么要这样做,这是一个错误吗?我该如何解决?

在此处输入图像描述

0 投票
1 回答
416 浏览

swift - NSToolbarFlexibleSpaceItem 在 Swift 中是对 NSSplitViewItem 的约束

在此处输入图像描述

几乎所有 macOS 官方应用程序都有这个工具栏的功能,NSToolbarItem灵活的空间是限制NSSplitViewItem查看的。我首先认为 NSToolbar 上可能有 3 个不同的部分。但它只是一个工具栏。您可以打开 Notes 应用程序并自定义工具栏。

  • 第一个灵活空间被检测到并与第一个拆分视图项目一起移动。
  • 第二灵活空间被检测到并与第二分割项一起移动。
  • 其余的将只是正常的灵活空间。
  • 如果只有两个灵活空间,则第二个将充当正常的灵活空间。同样的事情也适用于一个和/或灵活的空间。

我想这就是 Apple 配置灵活空间项的方式。

我找到了这个JWToolbarAdaptiveSpaceItem,但它是可移动的,并且不能像 Note 应用程序那样用灵活的空间项目替换。

还有另一个 stackoverflow 的问题(我现在找不到)询问这个问题,但答案是添加不是 NSToolbar 的假视图和按钮。

因此,有谁知道如何实现这一目标?

(对不起我的英语)

0 投票
1 回答
522 浏览

swift - Collapsing NSSplitViewItem does not call splitViewDidResizeSubviews

I have a class that inherits from NSSplitViewController and overrides the splitViewDidResizeSubviews function.

When I call collapse on a NSSplitViewItem inside the NSSplitViewController and I see the NSSplitViewItem visibly resize the splitViewDidResizeSubviews function isn't called.

If I resize the window the splitViewDidResizeSubviews function is called so I know it is implemented correctly.

Can I expect the splitViewDidResizeSubviews function to be called on a collapse and if so what might I be doing wrong?

0 投票
1 回答
1151 浏览

autolayout - NSTabView 中 NSSplitView 的布局问题 - 缺少约束

我做了一个非常简单的虚拟项目来说明我的问题(在 10.12.1 上使用 Xcode 8.1)。我有一个带有 2 个选项卡的 NSTabViewController 的故事板,其中一个是 NSSplitViewController。尽管一切似乎都运行良好,但我在运行时看到以下警告:

“TabSplitViewDummy[3615:89221] [Layout] 检测到 <_NSSplitViewItemViewWrapper: 0x6000001a0d20> 缺少约束。由于没有足够的约束来完全定义大小和原点,因此无法放置。添加缺少的约束,或设置 translatesAutoresizingMaskIntoConstraints=YES 和约束将为您生成。如果此视图在 macOS 10.12 及更高版本上手动布局,您可以选择不从覆盖中调用 [super layout]。在 DETECTED_MISSING_CONSTRAINTS 上设置断点以进行调试。此错误只会记录一次。

我尝试为所有视图设置 translatesAutoresizingMaskIntoConstraints=YES 以及设置约束 - 没有任何效果。到目前为止,我只发现了 3 件事:

  1. 当我更改选项卡的顺序以使拆分视图在启动时不可见时,没有警告消息
  2. 当我删除选项卡视图并制作窗口的拆分视图内容时,没有警告消息
  3. 当我在 DETECTED_MISSING_CONSTRAINTS 上设置一个符号断点时,它会被击中 6 次,所以我猜有 6 个缺少约束

我已经为此失去了好几天,我在这里错过了什么?

非常感谢你的帮助!!!

GitHub 虚拟项目

0 投票
0 回答
96 浏览

cocoa - 拆分视图控制器内存管理

我在我的 osx 应用程序中使用简单的拆分视图控制器...拆分项目 0 用于菜单,第二个用于内容(如在 slack 应用程序中)。

我得到内存泄漏,所以需要优化......这是单击菜单项时我所做的:

0 投票
2 回答
2923 浏览

macos - 使用 Swift 设置 NSSplitViewController 窗格的宽度

Xcode 8.2.1、Swift 3.0.2、macOS 10.12

我有一个NSSplitViewController有 3 个窗格的(请注意NS;这是针对Mac应用程序的)。

我正在尝试将最左侧的窗格设置为始终具有固定宽度并且不可调整大小。我尝试了以下方法:

  • 出于某种原因,自动布局约束在窗格子视图的情节提要编辑器中不可用。
  • 设置constrainMaxCoordinateconstrainMinCoordinate没有工作。

最近有没有人让这个工作?有很多关于这个主题的文章,但是他们的工具集已经有几年的历史了,他们的建议都没有对我有用。谢谢!

在此处输入图像描述

0 投票
2 回答
1728 浏览

cocoa - 将 NSToolbarItems 与 NSSplitView 列对齐

Finder 和 Notes 具有我正在寻求重现的特殊行为。NSToolbar 中的“灵活空间”似乎考虑了拆分视图的尺寸。例如,第一组按钮在侧边栏的左侧与右侧对齐。第二组图标与第一列的右侧对齐。当我加宽侧边栏时,工具栏项目会随之移动。

有可能重现这个吗?

在此处输入图像描述


解决方案

使用@KenThomases 提供的解决方案,我实现了如下: