Xcode OS X故事板:如何获得对顶级“窗口内容”视图控制器的引用?

时间:2014-11-18 08:36:11

标签: xcode swift xcode-storyboard nswindowcontroller nstabviewcontroller

我有一个基本的Cocoa应用程序来试用Swift和Storyboard。

该应用程序由3个主要视图组成,这些视图由NSTabViewController管理,再次链接到主窗口的“窗口内容”关系。

我在窗口的工具栏中添加了NSSegmentedControl,以便在3个标签视图之间切换。

在主窗口控制器中,我添加了工具栏项的操作方法,以便在标签之间切换,但我无法弄清楚如何获取对标签视图控制器的引用以实际切换标签。

我尝试将我的操作方法添加到选项卡视图控制器,但这不起作用,因为选项卡视图控制器可能不在响应程序链中,如果它包含一个空视图(这是一个错误吗?)。

作为一种解决方法,我在选项卡视图控制器中覆盖了viewDidAppear()。在那里,我获得了view.window.windowController的句柄,并在实例变量中设置了对“self”的引用。这有效,但似乎不对。应该有办法从窗口控制器到它的内容视图控制器...

窗口控制器和标签视图控制器存在于不同的场景中,我无法通过IBOutlet连接它们。此外,对于“窗口内容”关系,窗口控制器上都没有调用segue方法。

Storyboard

2 个答案:

答案 0 :(得分:0)

我主要是OS X家伙,我自己也是StoryBoards的新手,但我认为你需要做的是:

  1. 写下你的

    - (IBAction)someResponse:(id)sender {}

  2. 计划处理操作的视图控制器中的

    方法。

    1. 连接Control,以便将其操作发送到FirstResponder。如果你的视图控制器在响应者链中,它将收到它。

答案 1 :(得分:0)

我知道我已经非常迟了,也许在发布该问题时它并不存在,但对于任何登陆此处的人来说,NSWindowController都有contentViewController: NSViewController?属性(已添加)在macOS 10.10中,所以在2014年底我认为。)