将SplitViewController设置为窗口内容会导致窗口不显示

时间:2016-06-16 22:07:57

标签: xcode swift macos xcode-storyboard

使用Storyboard和Swift在OS X 10.11.5上使用Xcode 7.3.1

我正在尝试为OS X学习Swift编程,所以我试图将已经用Java编写的应用程序移植到本机OS X代码中。该应用程序要求窗口的内容垂直拆分,这是我在JavaFX中使用BorderPane完成的。

我正在尝试使用NSSplitViewController在Xcode中执行此操作,但由于某种原因,Split View Controller会导致应用程序窗口在运行应用程序时不显示。如果我添加一个简单的NSViewController,窗口就会显示得很好。

我正在使用this video作为参考,但是相同的步骤(即在新的“垂直分割视图控制器”中拖动并通过设置为窗口内容将其连接到窗口控制器)不会产生相同的结果。我知道视频有点陈旧,但过程应该大致相同,对吧?

这是a screenshot of my storyboard

TL; DR:使用Storyboards和Swift为OS X创建一个新的Xcode项目,将SplitViewController设置为窗口内容,运行应用程序,窗口不显示。

  • 有什么我不做的事吗?
  • 这只是一个错误吗?
  • 我有什么办法可以让窗口显示分割视图控制器吗?

更新

我尝试了对NSWindowController进行子类化以查看是否可以强制加载窗口,并且看到windowDidLoad方法被调用,但仍然没有窗口...

这是我的WindowController子类的代码:

import Cocoa

class WindowController: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()
        print("The window did load.")
    }
}

当我用它运行程序时,它会打印出消息“窗口已加载”。进入输出,但没有别的,所以没有运行时错误。

1 个答案:

答案 0 :(得分:0)

所以我自己解决了这个故事板上的一些小问题。问题似乎源于在故事板中配置SplitViewController的方式。看起来,如果拆分视图控制器的子视图控制器只包含空视图,它们的大小设置为0并且窗口已加载,但其大小为0,因此实际上并未显示。

我在视图和显示的窗口中添加了内容。还是要弄清楚如何让它以我想要的尺寸显示,但最大的障碍已经过去了。