【发布时间】:2015-04-08 10:39:37
【问题描述】:
StoryBoard for Cocoa 中的 Presentation 选项(在 Attribute Inspector 中)到底有什么作用。
它提供了两个选项供您选择
- 单人
- 多个
P.S 搜索标题时,结果与PowerPoint演示文稿有关
【问题讨论】:
标签: macos cocoa storyboard nswindowcontroller nsviewcontroller
StoryBoard for Cocoa 中的 Presentation 选项(在 Attribute Inspector 中)到底有什么作用。
它提供了两个选项供您选择
P.S 搜索标题时,结果与PowerPoint演示文稿有关
【问题讨论】:
标签: macos cocoa storyboard nswindowcontroller nsviewcontroller
演示风格会影响“显示”转场。可能它也会影响其他 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”一样。即使目的地实际上与参考在同一个情节提要中,也会发生这种情况。
【讨论】: