ggw*_*ean 9 xcode uitableview ios swift
我以前在我searchController.searchBar的标题视图中有一个,UITableView但我想添加按钮来更改显示的数组.现在我已经UISearchBar在我的故事板中添加了一个我试图弄清楚如何将它连接到我的UISearchController所以我可以正确地更新结果.然而,即使在最新的XCode中,我们仍然UIDisplayController在IB中.
我认为有两种方法可以解决这个问题,或者有一种方法可以连接它们,我不知道它或者我只是将searchBar原生用于searchController并将其框架移动到我想要的位置.由于AutoLayout对尺寸的好处,我对尝试后者犹豫不决.
我总是在界面生成器文件中放置一个 44 点高的占位符视图。然后,您可以将 SearchController.view 添加为该容器视图的子视图。
@IBOutlet weak var searchContainerView: UIView!
fileprivate lazy var searchController: UISearchController = {
let contactSearchViewController = self.storyboard?.instantiateViewController(withIdentifier: String(describing: ContactSearchViewController.self)) as! ContactSearchViewController
contactSearchViewController.delegate = self
contactSearchViewController.datasource = self
let searchController = UISearchController(searchResultsController: contactSearchViewController)
searchController.searchResultsUpdater = contactSearchViewController
searchController.dimsBackgroundDuringPresentation = false
searchController.definesPresentationContext = true
return searchController
}()
override func viewDidLoad() {
super.viewDidLoad()
searchContainerView.addSubview(searchController.searchBar)
let attributes: [NSLayoutAttribute] = [.top, .bottom, . left, .right]
NSLayoutConstraint.activate(attributes.map{NSLayoutConstraint(item: self.searchController.searchBar, attribute: $0, relatedBy: .equal, toItem: self.searchContainerView, attribute: $0, multiplier: 1, constant: 0)})
}
Run Code Online (Sandbox Code Playgroud)