1.添加一个窗口类

class AddWindowWC<RootView : View>: NSWindowController {
    convenience init(rootView: RootView) {
        let hostingController = NSHostingController(rootView: rootView.frame(width: 300, height: 400))
        let window = NSWindow(contentViewController: hostingController)
        window.setContentSize(NSSize(width: 300, height: 400))
        self.init(window: window)
    }
}

这是一个窗口类,创建实例后会创建一个新的窗口。阅读代码我们可以看出如果实例化此类,将会得到一个宽300,高400的新窗口。

2.新建一个要跳转后的swiftui文件

这里我们创建一个名为“addWindowView.swift”的swiftUI View文件。

import SwiftUI

struct addWindowView: View {
    @State var inputname = ""
    @State var inputclass = ""
    @State var idnum = ""
    
    var body: some View {
        VStack{
            HStack{
                Text("姓名")
                TextField("姓名", text:$inputname)
            }
            .padding()
            HStack{
                Text("班级")
                TextField("班级号", text: $inputclass)
            }
            .padding()
            HStack{
                Text("学号")
                TextField("学号", text: $idnum)
            }
            .padding()
        }
    }
}

struct addWindowView_Previews: PreviewProvider {
    static var previews: some View {
        addWindowView()
    }
}

3.添加一个按钮来进行跳转

Button按钮的action修改为用刚刚制作的界面作为rootView创建新窗口的命令。代码如下:

Button(action: {
                let AddWindowView = addWindowView(viewContext: viewContext)

                let controller = AddWindowWC(rootView: AddWindowView)
                controller.window?.title = "新窗口的标题"
                controller.showWindow(nil)
            }) {
                Label("按钮的标题", systemImage: "plus")
            }
 

发表评论

后才能评论