2

我做了一个非常简单的虚拟项目来说明我的问题(在 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 虚拟项目

4

1 回答 1

1

在几乎失去它之后,我终于找到了解决方案。以防万一其他人遇到同样的麻烦,这对我有用:转到情节提要并将 NSTabViewController 的“视图”出口连接到“无阴影选项卡视图”。而已。当您设置新的 NSTabViewController 时,您希望 Xcode 这样做,但事实并非如此。我不完全明白为什么,但不知何故,这与 NSSplitView 的自动布局混淆了。如果您可以详细解释这一点,请在评论中这样做。

于 2016-11-01T14:01:53.747 回答