【问题标题】:NSWindowController/NSViewController "Presentation" setting in StoryboardStoryboard 中的 NSWindowController/NSViewController“演示”设置
【发布时间】:2015-04-08 10:39:37
【问题描述】:

StoryBoard for Cocoa 中的 Presentation 选项(在 Attribute Inspector 中)到底有什么作用。

它提供了两个选项供您选择

  • 单人
  • 多个

P.S 搜索标题时,结果与PowerPoint演示文稿有关

【问题讨论】:

    标签: macos cocoa storyboard nswindowcontroller nsviewcontroller


    【解决方案1】:

    演示风格会影响“显示”转场。可能它也会影响其他 segue,但我只测试了 Show segue。我使用 Xcode 7.1.1 在 OS X 10.10.5 (Yosemite) 上进行了测试。

    如果窗口控制器的显示样式是“Multiple”(默认),那么窗口控制器的 Show segue 总是会从情节提要中加载窗口控制器的新实例。这意味着您可以一次获得多个窗口控制器实例,每个实例在屏幕上都有自己的窗口。默认情况下,这些窗口会堆叠在一起,因此在您移动或关闭一个窗口之前,发生的情况并不明显。

    如果一个窗口控制器的显示样式是“单一”,并且该窗口控制器的一个实例已经从情节提要中加载,并且该窗口控制器仍然存在(可能是因为它的窗口仍在屏幕上),那么一个 Show segue该视图控制器将不会创建一个新实例。相反,Show segue 会将现有窗口控制器的窗口置于最前面。

    如果你想要像 Xcode 的设备窗口这样的行为,这种行为很有用,其中只能有一个这样的窗口。您在情节提要的“窗口”菜单中创建一个“设备”菜单项,并使用 Show segue 将其连接到情节提要中的“设备”窗口控制器。将设备窗口控制器的显示样式设置为单一。现在菜单项将永远不会创建第二个设备窗口控制器,如果已经存在的话。

    您可能希望以某种方式将窗口的excludedFromWindowsMenu 属性设置为true,这样它就不会在窗口菜单中出现两次(因为默认情况下它会将自身附加到该菜单)。例如,您可以使用 NSWindowController 的子类来设置它:

    class DevicesWindowController: NSWindowController {
        override func windowDidLoad() {
            super.windowDidLoad()
            window?.excludedFromWindowsMenu = true
        }
    }
    

    视图控制器也有展示风格,因为你也可以将 Show segues 连接到视图控制器。连接到视图控制器的 Show segue 会在运行时自动创建一个窗口控制器来包含视图控制器。窗口控制器的表示样式实际上设置为视图控制器的,因此如果将视图控制器的表示设置为 Single,您将获得相同的单例行为。

    据我所知,情节提要设置没有可以在代码中使用的相应公共属性或方法。

    如果您将 Show segue 连接到情节提要参考(Xcode 7 中的新功能),则 segue 会忽略目标窗口控制器的呈现样式,并且就像“Multiple”一样。即使目的地实际上与参考在同一个情节提要中,也会发生这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      相关资源
      最近更新 更多