NSWindowController中的当前模态,无需使用情节提要

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

我建立了一个在登录过程开始时正在运行的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")
  })
}

模式永远不会出现

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.