我理解它的新功能,但这似乎是一个非常基本的功能,并不在这里。在新的.searchable 15中实现iOS时,似乎根本无法使用NavigationLink。
理想情况下,搜索将生成一个带有ForEach的过滤列表,对于每个项目,Nav可以根据您的选择将您带到另一个视图。ForEach和list看起来很漂亮,不会带你去任何地方。
看着WWDC21,他们谈论了很多关于.searchable的事情,但是很少给出演示/例子。
这里有一个简单的例子,没有ForEach循环,它表明它根本不工作。我是不是遗漏了什么?
任何见解都值得赞赏:
import SwiftUI
struct ContentView: View {
@State private var term = ""
var body: some View {
NavigationView {
Text("Hello, world!")
.padding()
}
.searchable(text: $term) {
NavigationLink(destination: SecondView()) {
Text("Go to second view")
}
}
}
}
struct SecondView: View {
var body: some View {
Text("Goodbye!")
.padding()
}
}发布于 2021-06-10 14:50:12
无论发生什么,NavigationLink必须始终在NavigationView内部。如果你想把它放在外面,就像在.searchable里面一样,你应该使用programmatic navigation with isActive。
struct ContentView: View {
@State private var term = ""
@State private var isPresenting = false
var body: some View {
NavigationView {
/// NavigationView must only contain 1 view
VStack {
Text("Hello, world!")
.padding()
/// invisible NavigationLink
NavigationLink(destination: SecondView(), isActive: $isPresenting) { EmptyView()}
}
}
.searchable(text: $term) {
Button { isPresenting = true } label: {
Text("Go to second view")
}
}
}
}
struct SecondView: View {
var body: some View {
Text("Goodbye!")
.padding()
}
}结果:

https://stackoverflow.com/questions/67923446
复制相似问题