这是一个初学者问题当工具栏中的按钮点击时,我想移动到下一个视图控制器(选项视图(,我该怎么做?
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")
}
}
}
}
}
}
您可以使用NavigationLink
的isActive
属性以编程方式激活链接。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")
}
}
}
}
}
}