У меня есть контроллер представления, который представляет разные дочерние представления.Каждое дочернее представление создается контроллером представления, вызывающим метод UINib()
, и контроллер представления передает себя в качестве параметра этому представлению.
class func instanceFromNib(parentViewController: UIViewController) -> UIView {
let view = UINib(nibName: "PodcastsPage", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! PodcastsPage
view.viewController = parentViewController
return view as UIView
}
Как только представление получает ссылку на свой родительский контроллер представления, оно устанавливаетсоответствующая панель навигации
private var viewController: UIViewController! {
didSet {
setupNavigationBar()
}
}
Внутри setupNavigationBar()
у меня есть код, который должен добавить UISearchController
в панель навигации контроллера вида
func setupNavigationBar() {
guard let navigationBar = viewController.navigationController?.navigationBar else {
return
}
navigationBar.isTranslucent = false
navigationBar.barTintColor = .navigationBar
navigationBar.titleTextAttributes = [
.font: UIFont(name: "AvenirNext-DemiBold", size: 18.0)!,
.foregroundColor: UIColor.textPrimary
]
viewController.navigationItem.title = "Follow Podcasts"
let nextButton = UIBarButtonItem(title: "Finish", style: .done, target: nil, action: nil)
nextButton.tintColor = .orangePrimary
viewController.navigationItem.setRightBarButton(nextButton, animated: false)
// Set UISearchController here //
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.placeholder = "Search"
searchController.searchResultsUpdater = self
viewController.navigationItem.searchController = searchController
viewController.navigationItem.hidesSearchBarWhenScrolling = false
}
UISearchController
не отображается, когдаХотя я запускаю приложение
Тем не менее, если я установлю UISearchController
внутри viewDidLoad
контроллера вида, как, так, панель поиска на самом деле присутствует.
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.placeholder = "Search"
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
}
Что мне нужно сделать, чтобы настроить UISearchController
с дочернего вида?