YNSearch + Realm 支持
更新
详情请见 变更日志
简介
Highlighter 了解如何突出显示搜索结果
请参阅需求
YNSearch
是用Swift 5.0编写的。支持iOS 8.0及以上版本。
安装
CocoaPods
YNSearch通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中
pod 'YNSearch'
Carthage
github "younatics/YNSearch"
简单用法
设置分类(必填)和搜索历史(可选)
import YNSearch
let demoDatabase = ["Menu", "Animation", "Transition", "TableView", "CollectionView", "Indicator", "Alert", "UIView", "UITextfield", "UITableView", "Swift", "iOS", "Android"]
ynSearch.setCategories(value: demoDatabase)
ynSearch.setSearchHistories(value: demoDatabase)
self.ynSearchinit()
设置数据库(必填)和键(必填)。键将在YNSearchListView
中显示,如果您想自定义,可以设置您的数据库为[Any]
。
let database1 = YNDropDownMenu(key: "YNDropDownMenu")
let database2 = YNSearchData(key: "YNSearchData")
let demoDatabase = [database1, database2]
self.initData(database: demoDatabase)
设置YNSearchListView
代理
func ynSearchListView(_ ynSearchListView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = self.ynSearchView.ynSearchListView.dequeueReusableCell(withIdentifier: YNSearchListViewCell.ID) as! YNSearchListViewCell
if let ynmodel = self.ynSearchView.ynSearchListView.searchResultDatabase[indexPath.row] as? YNSearchModel {
cell.searchLabel.text = ynmodel.key
}
return cell
}
func ynSearchListView(_ ynSearchListView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let ynmodel = self.ynSearchView.ynSearchListView.searchResultDatabase[indexPath.row] as? YNSearchModel, let key = ynmodel.key {
// Call listview clicked based on key
self.ynSearchView.ynSearchListView.ynSearchListViewDelegate?.ynSearchListViewClicked(key: key)
// return object you set in database
self.ynSearchView.ynSearchListView.ynSearchListViewDelegate?.ynSearchListViewClicked(object: self.ynSearchView.ynSearchListView.database[indexPath.row])
// Append Search history
self.ynSearchView.ynSearchListView.ynSearch.appendSearchHistories(value: key)
}
}
使用Realm
使用Realm获取您的数据
let datas = realm.objects(RealmModel.self)
Realm不是集合类型,因此您需要用[Any]
类型再次转换它。这将找到您的RealmModel中的所有字符串并显示结果。
var dataArray = [Any]()
for data in datas {
let searchModel = RealmModel()
searchModel.author = data.author
searchModel.detail = data.detail
searchModel.title = data.title
searchModel.type = data.type
dataArray.append(searchModel)
}
self.initData(database: dataArray)
Objectification 用于准确搜索结果。此库将获取你的对象中所有数据并为我们进行搜索。
我使用了已完成!
查看层次结构
YNSearchViewController: Inherit this viewcontroller
|-- YNSearchTextFieldView: YNSearchTextField with cancel button
| |-- YNSearchTextField: Search UITextfield
| |-- cancelButton: Show when YNSearchTextField textFieldDidBeginEditing
|
|-- YNSearchView : get both YNSearchMainView and YNSearchListView
| |-- YNSearchMainView: First view that you can see
| | |-- categoryLabel: Cateogry label
| | |-- [YNCategoryButton]: cateogory buttons
| | |-- searchHistoryLabel: Search history label
| | |-- [YNSearchHistoryView]: history views
| | | |-- [YNSearchHistoryButton]: Search history button
| | | |-- [closeButton]: Close button
| |
| |-- YNSearchListView: UITableview with search result
自定义使用方法
如果你想要回调,请设置 YNSearchDelegate
self.delegate = self
func ynSearchHistoryButtonClicked(text: String) {
print(text)
}
func ynCategoryButtonClicked(text: String) {
print(text)
}
func ynSearchListViewClicked(text: String) {
print(text)
}
func ynSearchListViewClicked(object: YNSearchModel) {
print(object)
}
设置 YNCategoryButton
类型。
self.ynSearchView.ynSearchMainView.setYNCategoryButtonType(type: .colorful)
在示例中查看更多使用方法
YNSearch
你可以根据视图层次结构完全自定义此 参考
如果你在使用此库,请告诉我或发起拉取请求 :)
Highlighter
Objectification
MotionBook
作者
许可
YNSearch 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。