IGListKit/Examples/Examples-iOS/IGListKitExamples/SectionControllers/SearchSectionController.swift
Vivian Phung f4013b4ffe IGListCollectionContext Examples
Summary: IGListCollectionContext Examples

Reviewed By: natestedman

Differential Revision: D26267044

fbshipit-source-id: 9f940922d7cb22283d6fcf1ac7354edcd966676b
2021-02-05 09:36:53 -08:00

57 lines
1.9 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 {
let cell: SearchCell = collectionContext.dequeueReusableCell(for: self, at: index)
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) {}
}