我尝试在我的macOS应用程序中以编程方式显示一个窗口。我想以编程方式完成的原因是因为用户单击一个Login按钮,结果函数取决于登录成功。如果成功,则显示该窗口;否则就不是。
下面是我的Xcode窗口的截图:
下面是我在代码中所做的尝试(Alert
是我创建的一个类,用于简化NSAlert
对话框的显示):
@IBAction func btnLogin_Click(_ sender: Any) {
let email = txtEmail.stringValue
if(email.isEmpty) {
Alert.show(parent: view.window!, message: "Email is required.")
return
}
let password = txtPassword.stringValue
if(password.isEmpty) {
Alert.show(parent: view.window!, message: "Password is required.")
return
}
// this does not work, even though I gave the window and view controllers
// both identifiers in the storyboard
self.storyboard?.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("wcStores"))
}
苹果的NSStoryboard.SceneIdentifier
文档几乎不存在,我看到的其他方法似乎与早期版本的Swift有关。
我哪里做错了?
2条答案
按热度按时间2mbi3lxu1#
好吧,这不是我最初想做的,但这种方式要好得多,也是我真正想要的。
这只会将窗口的内容替换为Interface Builder中定义的视图
vcStores
中的内容。This video也有帮助,尽管是在iOS和Swift 3上。我一开始试图创建一个新的
NSWindow
,因为我已经习惯了在Java Swing或C# Windows Forms中进行桌面开发。但我喜欢像这样简单地切换窗口内容。xiozqbni2#
使用这两个函数转到目标NSViewcontroller/UIViewcontroller:(必须为目标视图控制器分配一个唯一的情节提要ID)
Mac应用程序:
iOS APP: