使用工具栏在视图控制器之间移动

Moving between view controllers using toolbar

这是一个初学者问题 我想在点击工具栏中的按钮时移动到下一个视图控制器(OptionsView),我该怎么做?

var body: some View {
        
        NavigationView {
            VStack{
                Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
                
            }
            .navigationTitle("Profile")
            .navigationBarTitleDisplayMode(.inline)
            .toolbar{
                ToolbarItemGroup(placement: .navigationBarTrailing) {
                    
                    Button {
                        OptionsView()
                    } label: {
                        Label("Settings", systemImage: "gear")
                    }
                }
                
            }
        }
}
    
}

您可以使用 NavigationLinkisActive 属性 以编程方式激活 link。 NavigationLink 可以使用 EmptyView 作为它的标签,这样它就被隐藏了,因为你只需要通过 Button.

激活它

然后,在 Button 的操作中,您可以设置 @State 要激活的变量。

struct ContentView : View {
    @State private var optionsActive = false
    var body: some View {
        
        NavigationView {
            VStack{
                Text("Hello, World!")
                NavigationLink(isActive: $optionsActive) {
                    OptionsView()
                } label: {
                    EmptyView()
                }
            }
            .navigationTitle("Profile")
            .navigationBarTitleDisplayMode(.inline)
            .toolbar{
                ToolbarItemGroup(placement: .navigationBarTrailing) {
                    Button {
                        optionsActive = true
                    } label: {
                        Label("Settings", systemImage: "gear")
                    }
                }
                
            }
        }
    }
}