IGListKit/Examples/Examples-iOS/IGListKitExamples/SectionControllers/SearchSectionController.swift
Nate Stedman 1a44045dce Run lint on IGListKit
Differential Revision: D19141253

fbshipit-source-id: 9ed4c278a91bb48a1f6d33cafa9ce8f21861573d
2019-12-19 09:34:42 -08:00

59 lines
2 KiB
Swift

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import IGListKit
import IGListSwiftKit
protocol SearchSectionControllerDelegate: class {
func searchSectionController(_ sectionController: SearchSectionController, didChangeText text: String)
}
final class SearchSectionController: ListSectionController, UISearchBarDelegate, ListScrollDelegate {
weak var delegate: SearchSectionControllerDelegate?
override init() {
super.init()
scrollDelegate = self
}
override func sizeForItem(at index: Int) -> CGSize {
return CGSize(width: collectionContext!.containerSize.width, height: 44)
}
override func cellForItem(at index: Int) -> UICollectionViewCell {
guard let cell: SearchCell = collectionContext?.dequeueReusableCell(for: self, at: index) else {
fatalError()
}
cell.searchBar.delegate = self
return cell
}
// MARK: UISearchBarDelegate
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
delegate?.searchSectionController(self, didChangeText: searchText)
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
delegate?.searchSectionController(self, didChangeText: searchBar.text!)
}
// MARK: ListScrollDelegate
func listAdapter(_ listAdapter: ListAdapter, didScroll sectionController: ListSectionController) {
if let searchBar = (collectionContext?.cellForItem(at: 0, sectionController: self) as? SearchCell)?.searchBar {
searchBar.resignFirstResponder()
}
}
func listAdapter(_ listAdapter: ListAdapter, willBeginDragging sectionController: ListSectionController) {}
func listAdapter(_ listAdapter: ListAdapter,
didEndDragging sectionController: ListSectionController,
willDecelerate decelerate: Bool) {}
}