Weitere Informationen finden Sie im CHANGELOG
? Die fantastische Suchansicht, geschrieben in Swift 5.0, ähnelt der Suchansicht von Pinterest. Sie können diese Bibliothek vollständig anpassen. Sie können diese Bibliothek auch mit Realm verwenden! Siehe Verwendung unten
YNSearch
ist in Swift 5.0 geschrieben. Kompatibel mit iOS 8.0+
YNSearch ist über CocoaPods verfügbar. Um es zu installieren, fügen Sie einfach die folgende Zeile zu Ihrem Podfile hinzu:
pod 'YNSearch'
github "younatics/YNSearch"
Kategorien (erforderlich) und Suchverläufe festlegen (optional)
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 ( )
Legen Sie die Datenbank (erforderlich) und den Schlüssel (erforderlich) fest. Der Schlüssel wird in YNSearchListView
angezeigt. Sie können Ihre Datenbank auf [Any]
einstellen, wenn Sie sie anpassen möchten.
let database1 = YNDropDownMenu ( key : " YNDropDownMenu " )
let database2 = YNSearchData ( key : " YNSearchData " )
let demoDatabase = [ database1 , database2 ]
self . initData ( database : demoDatabase )
Legen Sie YNSearchListView
Delegaten fest
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 )
}
}
Holen Sie sich Ihre Daten mit Realm
let datas = realm . objects ( RealmModel . self )
Realm ist kein Sammlungstyp, daher müssen Sie es erneut mit dem Typ [Any]
konvertieren. Dadurch werden alle Zeichenfolgen in Ihrem RealmModel gefunden und die Ergebnisse angezeigt.
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 )
Erledigt!
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
Legen Sie YNSearchDelegate
fest, wenn Sie einen Rückruf wünschen
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 )
}
Legen Sie YNCategoryButton
-Typ fest.
self . ynSearchView . ynSearchMainView . setYNCategoryButtonType ( type : . colorful )
Weitere Verwendungsmöglichkeiten finden Sie in der Demo
YNSearch
basierend auf der Ansichtshierarchie vollständig anpassen younatics
YNSearch ist unter der MIT-Lizenz verfügbar. Weitere Informationen finden Sie in der LICENSE-Datei.