搜索输入框组件可以放置在任何位置,并且与默认的搜索输入框样式一致。
✦ 我的 macOS/iOS 应用程序 ✦
您可以通过将 MarkdownUI 添加为包依赖项,从而将其添加到 Xcode 项目中。
SearchField
链接到您的应用程序目标或者将以下内容添加到 Package.swift
.package(url: "https://github.com/jaywcjlove/swiftui-searchfield", from: "1.0.1")
或者在 Xcode 中添加包。
public init(searchText: Binding<String>,
placeholder: String? = nil,
onEditingChanged: ((Bool) -> Void)? = nil,
onTextChanged: ((String) -> Void)? = nil,
searchField: ((NSSearchField) -> Void)? = nil)
参数
searchText
: 绑定到搜索文本的字符串。placeholder
: 一个可选的占位符字符串,当输入字段为空时显示。onEditingChanged
: 一个闭包,当编辑状态改变时被调用,返回一个布尔值,指示编辑是否开始或结束。onTextChanged
: 一个闭包,当文本改变时被调用,返回当前的搜索文本。searchField
: 一个闭包,允许访问 NSSearchField 实例以进行自定义操作。import SwiftUI
struct ContentView: View {
@State private var searchText = ""
var body: some View {
SearchField(
searchText: $searchText,
placeholder: "Search...",
searchField: { searchField in
print(type(of: searchField)) // -> NSSearchField
}
)
}
}
在这个例子中,SearchField 被初始化并绑定到 @State 变量 searchText,用户输入的文本将被打印到控制台。
import SwiftUI
import SearchField
struct ContentView: View {
@State private var searchText = ""
@State private var isEditing = false
var body: some View {
SearchField(
searchText: $searchText,
placeholder: "Search...",
onEditingChanged: { editing in
isEditing = editing
print("Editing started: \(editing)")
},
onTextChanged: { text in
print("Search text changed to: \(text)")
}
) { searchField in
print(type(of: searchField)) // -> NSSearchField
}
}
}
在这个例子中,onEditingChanged 闭包被用于处理编辑状态的变化。
import SwiftUI
import SearchField
struct ContentView: View {
@State private var searchText = ""
@State private var searchField: NSSearchField?
var body: some View {
SearchField(
searchText: $searchText,
placeholder: "Search...",
searchField: { field in
// 自定义 NSSearchField 的属性
field.isBordered = true
field.isBezeled = true
}
)
}
}
import SearchField
struct ContentView: View {
@State private var searchText = ""
var body: some View {
- SearchField(searchText, textFieldChanged: { value in
+ SearchField(searchText: $searchText, placeholder: "Search...") { text in
- print("value\(value)")
- searchText = value
+ print("Search text changed to: \(text)")
+ })
- }
Text(searchText)
}
}
import SwiftUI
import SearchField
struct ContentView: View {
@State private var searchText = ""
var body: some View {
SearchField(
searchText: $searchText,
placeholder: "Search...",
searchField: { searchField in
print(type(of: searchField)) // -> NSSearchField
}
)
}
}
基于 MIT 许可证发布。