IOS swift Как я могу заставить свой SubView отображаться под моей панелью поиска

У меня есть UISearchBar, встроенный в форму, поэтому я пытаюсь сделать это, когда кто-то нажимает на SearchBar, я хочу, чтобы TableView всплывал как subView . У меня это работает правильно, однако я хотел бы, чтобы SubView отображался под SearchBar, чтобы пользователи могли продолжать поиск, мой SubView занимает всю страницу. Вот как я пытаюсь заставить эту функциональность работать: Trulia App . Обратите внимание на searchBar с соответствующим представлением: если вы нажмете на SearchBar, прямо под SearchBar появится подпредставление. Как указывалось ранее, для меня все работает, за исключением того, что subView занимает всю страницу и не отображается под панелью поиска. Это мой код, третье изображение - моя раскадровка ниже, и это мой код

       class RegistrationViewController: UIViewController,UISearchBarDelegate {

    @IBOutlet weak var Location: UISearchBar!
       func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
        searchBar.setShowsCancelButton(false, animated: true)

        let Popup = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "zip_searches") as! ExampleTableViewController
        self.addChildViewController(Popup)
        Popup.view.frame = self.view.frame
        self.view.addSubview(Popup.view)
        Popup.didMove(toParentViewController: self)
        return true
    }
}

[Главная страница[1]

Подвид

введите здесь описание изображения


person Rome Torres    schedule 11.11.2016    source источник


Ответы (2)


В iOS для этого есть UISearchController. Вот код, чтобы добавить и ограничить панель поиска существующим представлением контейнера в вашей доске объявлений, а также настроить tableViewController для отображения, когда пользователь начинает печатать.

    locationSearchResultTableViewController = storyboard?.instantiateViewController(withIdentifier: String(describing: LocationSearchResultTableViewController.self)) as! LocationSearchResultTableViewController
    locationSearchResultTableViewController.delegate = self
    searchController = UISearchController(searchResultsController: locationSearchResultTableViewController)
    searchController.searchResultsUpdater = locationSearchResultTableViewController
    searchController.dimsBackgroundDuringPresentation = false
    searchController.definesPresentationContext = true
    searchContainer.addSubview(searchController.searchBar)
    searchController.searchBar.translatesAutoresizingMaskIntoConstraints = false
    let attributes: [NSLayoutAttribute] = [.top, .bottom, .left, .right]
    attributes.forEach { NSLayoutConstraint(item: self.searchController.searchBar, attribute: $0, relatedBy: .equal, toItem: searchController.searchBar.superview, attribute: $0, multiplier: 1, constant: 0)}
person Josh Homann    schedule 11.11.2016
comment
Спасибо за код, теперь я включу его в - person Rome Torres; 12.11.2016

Я нашел простое решение своей проблемы. У вас просто есть SearchBar вверху, затем вы создаете второй UIView и помещаете его под SearchBar. Затем вы подключаете этот новый UIView, например

@IBOutlet weak var view2: UIView!

затем, когда дело доходит до части кадра, вы просто делаете это

Popup.view.frame = self.view2.frame

То есть, когда вы нажимаете на SearchBar, View2 будет действовать как всплывающее окно и закрывать все, что находится под searchBar.

person Rome Torres    schedule 12.11.2016