UISearchController не отображается, если не установлен в методе viewDidLoad - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть контроллер представления, который представляет разные дочерние представления.Каждое дочернее представление создается контроллером представления, вызывающим метод 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 не отображается, когдаХотя я запускаю приложение not visible UISearchController

Тем не менее, если я установлю UISearchController внутри viewDidLoad контроллера вида, как, так, панель поиска на самом деле присутствует.

override func viewDidLoad() {
    super.viewDidLoad()

    let searchController = UISearchController(searchResultsController: nil)
    searchController.searchBar.placeholder = "Search"
    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
}

Что мне нужно сделать, чтобы настроить UISearchController с дочернего вида?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...