在NSToolbar内为NSProgressIndicator创建插座

Spa*_*Dog 1 macos cocoa nstoolbar nstoolbaritem

我有一个基于OSX故事板的应用程序,其开头是NSSplitViewController这样的:

在此处输入图片说明

splitViewController有两个viewControllers:主和细节。

在窗户里面我有一个NSToolbar。我将拖到NSProgressIndicator该工具栏上,并将Xcode嵌入到NSToolbarItem

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

Xcode不允许我创建插座。我尝试了以下选项:

  1. 从拖ToolbarItemmasterController类文件,detailController类文件和NSSplitViewController类。
  2. 从ToolbarItem拖动到委托类。
  3. 从拖NSProgressIndicatormasterController类文件,detailController类文件和NSSplitViewController类。
  4. 从NSProgressIndicator拖动到委托类。
  5. 从NSToolbarItem和NSProgressIndicator拖动到窗口控制器第一响应器。

在所有情况下,拖动都不会出现允许我创建出口的窗口。

为了天堂,我如何创建这样的出口?我将它拖到哪个班级,我该怎么做?

Woo*_*ter 5

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

BasicCocoaAppWithSplitviewAndToolBar

默认情况下,您的Window场景由NSWindowController支持,您不能在其中添加新的出口。您需要创建一个子类,将其与Window关联,然后您应该能够在其中创建出口。

“文件”>“新文件”>“可可类”指定一个名称,如“ SpaceDogsWindowController”,作为NSWindowController的子类。

然后使用选择窗口控制器图标(蓝色圆圈)并在Xcode中选择Identity Inspector。(CMD + ALT + 3)。在“类”字段中指定新类的名称。

然后尝试连接插座:

1)显示助理编辑器

2)使用跳转栏确保您的自定义班级可见(它在助手编辑器窗格的顶部,应显示“自动”,您可以点击它以选择新班级;如果显示“手动”,则将其更改为自动)。

3)如果您要控制拖动但仍无法建立连接,请尝试从文档轮廓中拖动(也显示在屏幕快照中)。

然后,您可以使用如下代码从其他视图控制器(属于该窗口的视图层次结构的后代)编辑该进度指示器:

    if let windowController = self.view.window?.windowController() as? CustomWindowController {
        windowController.progressIndicator.doubleValue = 0.4
    }
Run Code Online (Sandbox Code Playgroud)

或者在Objective-C中是这样的:

    CustomWindowController *myWindowControllerSubclass = self.view.window.windowController;
    windowController.progressIndicator.doubleValue = 0.4;
Run Code Online (Sandbox Code Playgroud)

希望能有所帮助。