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