iOS 15 引入了 .searchable()
,它是 SwiftUI 的官方搜索栏实现。因此,本项目现在已过时。我将继续保留这个项目,作为针对 iOS 15 以下版本的应用程序的polyfill。但是,此项目将不再进行积极开发,您应该尽快切换到新的系统。感谢各位的支持,祝大家编程愉快!
一个小型、轻量级的 SwiftUI UISearchController 封装器
更新您的 Package.swift
文件
let package = Package(
...,
dependencies: [
.package(
url: "https://github.com/thislooksfun/SwiftlySearch.git",
from: "1.0.0"),
...
],
...
)
https://github.com/thislooksfun/SwiftlySearch
作为网址import SwiftlySearch
struct MRE: View {
let items: [String]
@State
var searchText = ""
var body: some View {
NavigationView {
List(items.filter { $0.localizedStandardContains(searchText) }) { item in
Text(item)
}.navigationBarSearch(self.$searchText)
}
}
}
(#12) resultContent
内部的 NavigationLink
无法正常工作。这是 UIKit/SwiftUI 交互的局限性,因此我无能为力。如果您需要一个单独的视图来显示搜索结果,您可以使用如下所示的解决方法
struct ContentView: View {
@State
var searchText: String = ""
var body: some View {
NavigationView {
ZStack {
if searchText.isEmpty {
NormalView()
} else {
SearchResultsView(text: searchText)
}
}
.navigationBarSearch($searchText)
}
}
}
struct NormalView: View {
var body: some View {
Text("Some view")
}
}
struct SearchResultsView: View {
var text: String
var body: some View {
VStack {
Text("You searched for \(text)")
NavigationLink(destination: Text(text)) {
Text("Let's go!")
}
}
}
}