嗨,我已经看到这个问题被问了几次,但还没有明确的答案,所以我为 xcode 7 和 swift2 创建了它(无论如何这可能已经改变了一些事情)。
我使用 Xcode 7 和 Cocoa OSX Story board + swift2 创建了一个项目,所以我的项目从连接到 NSViewController的NSWindowController开始(如预期的那样!)。我在窗口控制器中添加了一个NSToolbar并在工具栏中添加了一个NSButton。我将 NSViewController 更改为新的NSSplitViewController之一,它链接到三个NSViewController并水平显示它们的视图 - 使用垂直分隔线 - (类似于您在照片应用程序或 Yosemite + 页面中看到的布局)。我的最终目标是我的工具栏中的按钮显示和隐藏第一个拆分。
我的理解是,我希望要实现这一点,我应该在 NSSplitViewController 中创建一个动作,以或多或少地改变自动布局约束的方式:如何在 Mac 中折叠和展开视图应用?.
然后以某种方式将此操作链接到工具栏中的 NSButton ......它恰好在 NSWindowController 中(在层次结构中很远并且被隔离)......
我已经解决了有关 NSToolbar 和故事板的其他问题,但未能实现我的目标:
- YouTube 视频:Cocoa Programming L17 - NSToolbar这是我发现的最接近解决问题的方法,但他的方法不适用于情节提要,只能创建您自己的 xib 文件。
- 在这个问题中:如何在 Xcode 6 和 Storyboard 中使用 NSToolBar?一个人建议使用第一个响应器建立链接,并期望一切都在运行时连接(这看起来有点狡猾,而不是我认为苹果会实现它的方式......)。第二个人建议在 NSWindowController 中创建一个视图控制器变量并从那里操作它的属性......但同样,也有点狡猾。
- 我在那个问题中看到的一个最新评论似乎是解决问题的最佳方法(但仍然不如我想的那么好)是将 NSObjectController 添加到每个场景的停靠栏,当场景加载时,设置值的对象到另一个 secene 的控制器。这真的是最好的前进方式吗?如果是这样,我怎么能做到这一点?
Apple 在 WWDC15 中确实(再次)提到,他们为 osx 和拥有视图控制器的拆分视图控制器创建了故事板,以便您可以将逻辑和工作转移到特定的视图控制器,所以我期待从在我的拆分视图控制器中,因为这是需要更改的目标。
有谁知道如何从视图控制器本身实现这一点?我真的无法找到将我的 ToolBarItem 连接到它的方法。