如何使用swift for macOS app从NSWindowController呈现模态。我没有使用故事板

问题描述 投票:0回答:1

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

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

有帮助吗?谢谢

我正在初始化我的主窗口,如下所示:

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")
  })
}

模态永远不会出现

swift xib nsviewcontroller nswindowcontroller
1个回答
0
投票

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

windowDidLoad()的窗口控制器内部

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

甚至在视图控制器的viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()
    // present the view
}
© www.soinside.com 2019 - 2024. All rights reserved.