我有一个UISearchBar嵌入在一个表单中,所以我想要做的是一旦有人点击SearchBar我想要一个TableView弹出作为一个子视图。我有正确的工作,但我希望SubView出现在SearchBar下,以便用户可以继续搜索,我的SubView接管整个页面。以下是我尝试使用该功能的方法: Trulia App 。 现在注意带有相应View的searchBar,如果单击SearchBar,则SearchBar下方会出现一个subView。如前所述,除了subView接管整个页面并且没有出现在SearchBar下面之外,一切正常。这是我的代码,第三张图片是我的storyBoard,这是我的代码
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
}
}
[
答案 0 :(得分:1)
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)}
答案 1 :(得分:-1)
我找到了解决问题的简单方法。您只需在顶部有一个SearchBar,然后创建第二个UIView并将其放在SearchBar下面。然后连接新的UIView,例如
@IBOutlet weak var view2: UIView!
然后当谈到框架部分时,你只需要这样做
Popup.view.frame = self.view2.frame
就是当你点击SearchBar时,View2将作为弹出窗口并覆盖searchBar下的所有内容。