如何以编程方式从在Menu
视图上选择SwiftUI中的操作的用户导航到新页面?当我选择一个选项时,我在这里没有导航。
示例代码:
struct MenuView: View {
@State var oneActive: Bool = false
@State var twoActive: Bool = false
var body: some View {
Menu {
Button {
oneActive = true
} label: {
Text("Option One")
}
Button {
twoActive = true
} label: {
Text("Option Two")
}
} label: {
Image(systemName: "ellipsis")
}
NavigationLink(destination: Text("Option One View"), isActive: $oneActive) { EmptyView() }
NavigationLink(destination: Text("Option Two View"), isActive: $twoActive) { EmptyView() }
}
}
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
ScrollView {
ForEach(0..<100, id: \.self) { index in
Text("\(index)")
}
}
}
.navigationTitle("TItle")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
MenuView()
}
}
}
}
}
发布于 2022-01-07 23:02:39
工具栏存在于NavigationView
层次结构之外,这就是为什么NavigationLink
在MenuView
中不能工作的原因。相反,您可以将NavigationLinks
放在NavigationView
中,然后将Bindings
发送到MenuView
。
struct MenuView: View {
@Binding var oneActive: Bool
@Binding var twoActive: Bool
var body: some View {
Menu {
Button {
oneActive = true
} label: {
Text("Option One")
}
Button {
twoActive = true
} label: {
Text("Option Two")
}
} label: {
Image(systemName: "ellipsis")
}
}
}
struct ContentView: View {
@State private var oneActive: Bool = false
@State private var twoActive: Bool = false
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Text("Option One View"), isActive: $oneActive) { EmptyView() }
NavigationLink(destination: Text("Option Two View"), isActive: $twoActive) { EmptyView() }
ScrollView {
ForEach(0..<100, id: \.self) { index in
Text("\(index)")
}
}
}
.navigationTitle("TItle")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
MenuView(oneActive: $oneActive, twoActive: $twoActive)
}
}
}
}
}
https://stackoverflow.com/questions/70627789
复制相似问题