У меня в приложении есть вид поиска, который работает, как и ожидалось. У меня есть требование обновить свое представление поиска, чтобы оно отображало категории поиска, когда панель поиска пуста.
Как отобразить вид контроллера XLPagerTabStrip, сохранив панель поиска на месте?
class SearchViewController: ButtonBarPagerTabStripViewController, UISearchBarDelegate{
var businesses = [Business]()
var coupons = [Coupon]()
var businessSearchVC: BusinessSearchViewController?
var couponSearchVC: CouponSearchViewController?
lazy var searchBar: UISearchBar = {
let sb = UISearchBar()
sb.placeholder = "Search businesses or coupons"
sb.barTintColor = .gray
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = UIColor.mainWhite()
sb.delegate = self
return sb
}()
override func viewDidLoad() {
settings.style.buttonBarItemBackgroundColor = .clear
settings.style.selectedBarBackgroundColor = .mainGreen()
settings.style.selectedBarHeight = 4.0
settings.style.buttonBarMinimumLineSpacing = 0
settings.style.buttonBarItemsShouldFillAvailableWidth = true
settings.style.buttonBarLeftContentInset = 0
settings.style.buttonBarRightContentInset = 0
settings.style.selectedBarHeight = CGFloat(5)
super.viewDidLoad()
view.backgroundColor = .white
self.navigationItem.titleView = searchBar
}
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
businessSearchVC = BusinessSearchViewController(collectionViewLayout: UICollectionViewFlowLayout(), businesses: businesses)
couponSearchVC = CouponSearchViewController(collectionViewLayout: UICollectionViewFlowLayout(), coupons: coupons)
return [businessSearchVC!, couponSearchVC!]
}
fileprivate func search(query: String) {
//search request to API
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
guard let searchTerms = searchBar.text else {
searchBar.endEditing(true)
return
}
searchBar.endEditing(true)
search(query: searchTerms)
}
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
//if empty (no text) then display view with search categories
}
}
Это приводит к следующему виду:
И я хотел бы, чтобы представление отображалось поверх категорий (аналогично магазину приложений), например:
Это представление категорий исчезнет, как только будет выбрана категория, и отобразится представление, которое у меня уже есть для предприятий и купонов.