【发布时间】:2021-08-05 15:57:48
【问题描述】:
如何让@Environment 在 macOS 中工作?下面是一个 sn-p 代码,它应该只是一个基本的 NavigationView,顶部尾随位置有一个搜索栏,理论上应该触发文本在搜索/不搜索之间切换,当你按下返回时它应该 散焦 搜索字段并打印以控制文本。
目前,它的布局正确,但isSearching 没有更新,dismissSearch() 也不起作用。有什么建议吗?
struct ContentView: View {
@State var searchText = ""
@Environment(\.isSearching) var isSearching
@Environment(\.dismissSearch) var dismissSearch
var body: some View {
NavigationView {
List {
Text("Search Bar")
}
VStack(alignment: .center) {
Text(isSearching ? "Searching" : "Not Searching")
}
.searchable(text: $searchText, placement: .toolbar)
.onSubmit(of: .search) {
dismissSearch()
print(searchText)
}
}
}
}
【问题讨论】:
-
嗨,事实上,这是一个完全可行的例子。您只需将复制粘贴到一个新的 SwiftUI 项目或 Playground 中,它就会运行。
dismissSearch是 SwiftUI 已经提供的 Environment 函数。 -
啊——明白了!对新的 Swift UI 3.0 内容还不够熟悉。