如何使用swift for macOS应用程序从NSWindowController呈现模态。我没有使用情节提要

时间:2019-04-07 16:02:53

标签: swift xib nsviewcontroller nswindowcontroller

我建立了一个在登录过程开始时运行的macOS框架,我想在窗口中向用户显示一些信息。我有一个带有.XIB文件的NSWindowController,它是框架的主窗口。

我想将更多的presentAsSheet添加到另一个视图。为此,我创建了一个带有.XIB的NSViewController来定义要在模式中呈现的用户界面,但是在这里我被完全阻止了,因为获取窗口的contentViewController始终为nil

有帮助吗? 谢谢

我正在这样初始化我的主窗口:

func run() {
  NSApp.activate(ignoringOtherApps: true)
  mainWC = MainWC(windowNibName: "MainWC")
  guard mainWC.window != nil else {
    return
  }
  NSApp.runModal(for: mainWC.window!)
}

我在尝试展示其他NSViewController的地方”

self.window?.contentViewController?.presentAsSheet(customViewController)

在我的MainWindowController中,我正在这样做:

@IBAction func btnAction(_ sender: Any) {
  let customModal = CustomModal(windowNibName: "CustomModal")
  self.window?.beginSheet(customModal.window!, completionHandler: { code in
    print(message: "Clicked")
  })
}

模态永远不会出现

1 个答案:

答案 0 :(得分:0)

在加载窗口和内容视图之前,您无法显示视图

windowDidLoad()中的窗口控制器中

override func windowDidLoad() {
    super.windowDidLoad()
    // present the view
}

甚至在视图控制器的viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()
    // present the view
}