我建立了一个在登录过程开始时正在运行的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")
})
}
模式永远不会出现
在加载窗口和内容视图之前,您无法显示视图
在windowDidLoad()
中的窗口控制器内部]
override func windowDidLoad() { super.windowDidLoad() // present the view }
甚至在视图控制器的
viewDidLoad
中
override func viewDidLoad() {
super.viewDidLoad()
// present the view
}