這是一個初學者的問題,當點擊工具列中的按鈕時,我想移動到下一個視圖控制器(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")
}
}
}
}
}
}
uj5u.com熱心網友回復:
您可以使用 a 的isActive屬性NavigationLink以編程方式激活鏈接。在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")
}
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/375001.html
