macos - 在 NSToolbar 内为 NSProgressIndicator 创建一个 socket

标签 macos cocoa nstoolbar nstoolbaritem

我有一个基于 OSX Storyboard的应用程序,它以 NSSplitViewController 开头,如下所示:

enter image description here

这个splitViewController有两个viewController:master和detail。

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

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

Xcode 不允许我创建 socket 。我尝试过这些选项:

  1. ToolbarItem 拖动到 masterController 类文件、detailController 类文件和 NSSplitViewController 类。
  2. 从 ToolbarItem 拖动到委托(delegate)类。
  3. NSProgressIndicator 拖到 masterController 类文件、detailController 类文件和 NSSplitViewController 类。<
  4. 从 NSProgressIndicator 拖动到委托(delegate)类。
  5. 从 NSToolbarItem 和 NSProgressIndicator 拖动到窗口 Controller 第一响应程序。

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

老天啊,我该如何创建这样的导出?我将其拖到哪个类以及如何操作?

最佳答案

我假设您的设置更像是下图:

BasicCocoaAppWithSplitviewAndToolBar

默认情况下,您的窗口场景由 NSWindowController 支持,您无法向其中添加新的导出。您需要创建它的子类,将其与您的窗口关联,然后您应该能够在其中创建导出。

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

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

然后尝试连接 socket :

1) 显示助理编辑器

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

3) 如果您按住 Control 进行拖动,但仍无法建立连接,请尝试从文档大纲中进行拖动(也显示在屏幕截图中)。

然后,您可以使用如下代码从其他 View Controller (这些 View Controller 是该窗口 View 层次结构的后代)编辑该进度指示器:

    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;

希望有帮助。

关于macos - 在 NSToolbar 内为 NSProgressIndicator 创建一个 socket ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27554966/

相关文章:

objective-c - 以编程方式设置 NSWindow 大小

objective-c - NSOutlineView - 它是如何被调用的?

objective-c - 如何在 Interface Builder (Xcode 5) 中编辑工具栏?

cocoa - 有没有办法检测 NSToolbar 上的溢出

c++ - 无法构建 lldb - 'atomic' 文件未找到

c++ - MacOs 上的 LLVM - 标准文件 iosfwd 中的未知类型名称 'template'

objective-c - 如何让AudioQueue播放而不卡住GUI?

cocoa - 如何禁用 NSToolbar 的溢出菜单?

cocoa - 获取另一个应用程序窗口的唯一 ID

ios - CATextLayer 旋转?