在NSToolbar中为NSProgressIndicator创建插座

时间:2014-12-18 20:18:43

标签: macos cocoa nstoolbar nstoolbaritem

我有这个基于OSX故事板的应用程序,它以NSSplitViewController开头,如下所示:

enter image description here

splitViewController有两个viewControllers:主要和详细信息。

在窗口内我有一个NSToolbar。我将NSProgressIndicator拖到该工具栏,Xcode将其嵌入NSToolbarItem

现在我需要从NSProgressIndicator到某个类创建一个插座(不是其他stackoverflow问题中解释的操作)。第一个问题是哪一个?

Xcode不会让我创建一个插座。我尝试过这些选项:

  1. ToolbarItem拖动到masterController类文件,detailController类文件和NSSplitViewController类。
  2. 从ToolbarItem拖到委托类。
  3. NSProgressIndicatormasterController类文件,detailController类文件拖到NSSplitViewController类。
  4. 从NSProgressIndicator拖到委托类。
  5. 从NSToolbarItem和NSProgressIndicator拖动到Window Controller First Responder。
  6. 在所有情况下,拖动都不会显示窗口以允许我创建插座。

    天哪,如何制作这样的插座?我拖到哪个班级,我该怎么做?

1 个答案:

答案 0 :(得分:4)

我假设您的设置更像是这张图片:

BasicCocoaAppWithSplitviewAndToolBar

默认情况下,您的Window场景由NSWindowController支持,您无法添加新的插座。你需要创建一个子类,将它与你的Window相关联,然后你应该能够在那里创建出口。

档案>新文件>可可类 指定像" SpaceDogsWindowController"这样的名称,作为NSWindowController的子类。

然后使用选择窗口控制器图标(蓝色圆圈)并在Xcode中选择Identity Inspector。 (CMD + ALT + 3)。在" Class"中指定新班级的名称。领域。

然后尝试连接插座:

1)显示助理编辑器

2)使用跳转栏确保您的自定义类可见(它位于助理编辑器窗格的顶部,应该显示为“自动”,然后您可以点击它以选择新的类;如果是'手动',将其更改为自动。

3)如果您正在进行控制拖动并且仍未提供连接,请尝试从文档轮廓中拖动(也在屏幕截图中显示)。

然后,您可以使用以下代码编辑来自其他视图控制器的进度指示器,这些控制器是该窗口视图层次结构的后代:

    if let windowController = self.view.window?.windowController() as? CustomWindowController {
        windowController.progressIndicator.doubleValue = 0.4
    }

或者,在Objective-C中,像这样:

    CustomWindowController *myWindowControllerSubclass = self.view.window.windowController;
    windowController.progressIndicator.doubleValue = 0.4;

希望有所帮助。