【问题标题】:SplitViewController set as window content causes the Window to not appearSplitViewController 设置为窗口内容导致窗口不出现
【发布时间】:2016-06-16 22:07:57
【问题描述】:

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

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

我试图在 Xcode 中使用 NSSplitViewController 来执行此操作,但由于某种原因,拆分视图控制器会导致应用程序窗口在我运行应用程序时不显示。如果我添加一个简单的 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.")
    }
}

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

【问题讨论】:

  • NSWindow 不是活的动物。它并不总是必须在启动时出现。如果它没有出现,让它以编程方式出现。
  • 我该怎么做?我对 xcode 和 swift 完全陌生

标签: xcode swift macos xcode-storyboard


【解决方案1】:

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

我在视图和显示的窗口中添加了内容。仍然需要弄清楚如何让它以我想要的大小显示,但最大的障碍已经越过了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2012-10-28
    • 1970-01-01
    • 2016-11-26
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多