2016-06-02 2 views
8

У меня ранее был searchController.searchBar в заголовке моего UITableView, но я хотел добавить кнопки, чтобы изменить, какой массив отображается. Теперь, когда я добавил UISearchBar в свою раскадровку, я пытаюсь выяснить, как подключить его к моему UISearchController, чтобы я мог правильно обновить результаты. Однако даже в новейшем XCode мы все еще имеем UIDisplayController в IB.Как подключить раскадровку UISearchBar к программно созданному UISearchController?

Два способа, я думаю, могут решить это, либо есть способ их подключения, и я не знаю, или я просто использую nativeBear native для searchController и сдвигаю его в том месте, где я его хочу. Я не решаюсь попробовать последнее из-за преимуществ AutoLayout для калибровки.

ответ

0

Я всегда просто помещал вид заполнителя в файле построителя интерфейса, который имеет 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)}) 
    } 
Смежные вопросы