Представление представления с помощью UISearchBar поверх представления XLPagerTabStrip - PullRequest
0 голосов
/ 29 октября 2018

У меня в приложении есть вид поиска, который работает, как и ожидалось. У меня есть требование обновить свое представление поиска, чтобы оно отображало категории поиска, когда панель поиска пуста.

Как отобразить вид контроллера 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
    }
}

Это приводит к следующему виду:

enter image description here

И я хотел бы, чтобы представление отображалось поверх категорий (аналогично магазину приложений), например: enter image description here

Это представление категорий исчезнет, ​​как только будет выбрана категория, и отобразится представление, которое у меня уже есть для предприятий и купонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...