【发布时间】:2014-11-18 08:36:10
【问题描述】:
我有一个基本的 Cocoa 应用程序来试用 Swift 和 Storyboard。
该应用由 3 个由 NSTabViewController 管理的主视图组成,这又与主窗口的“窗口内容”关系相关联。
我在窗口的工具栏中添加了NSSegmentedControl 以在 3 个选项卡视图之间切换。
在主窗口控制器中,我为工具栏项添加了在选项卡之间切换的操作方法,但我不知道如何获取对选项卡视图控制器的引用以实际切换选项卡。
我尝试将我的操作方法添加到选项卡视图控制器,但这不起作用,因为如果选项卡视图控制器包含空视图,它可能不在响应者链中(这是一个错误吗?)。
作为一种解决方法,我在选项卡视图控制器中覆盖了 viewDidAppear()。在那里,我得到了 view.window.windowController 的句柄,并在实例变量中设置了对“self”的引用。这有效,但似乎不正确。应该有一种方法可以从窗口控制器到它的内容视图控制器......
窗口控制器和选项卡视图控制器存在于不同的场景中,我无法通过 IBOutlet 连接它们。此外,对于“窗口内容”关系,也没有在窗口控制器上调用任何 segue 方法。
【问题讨论】:
-
嘿,马克。我遇到了恰好同样的问题。你还记得你最终做了什么来实现这一目标吗?这是我的问题的概述:gitlab.com/AMomchilov/public/experiments/…
-
我想我最终遍历
contentViewController?.children寻找我的标签视图控制器。与这种特殊情况无关,但非常有用的是NSResponder.supplementalTarget(forAction:sender:)。我一直使用它来在我的窗口控制器中公开不直接属于响应者链的对象,以将操作转发到菜单和工具栏。
标签: xcode swift xcode-storyboard nswindowcontroller nstabviewcontroller