我有一个带有两个childViewControllers的容器viewController。两个childViewControllers都是tableViewControllers。我只希望其中一个子viewControllers能够使用searchController。
我在父containerViewController的viewDidLoad中定义并设置searchController:
let searchController = UISearchController(searchResultsController: nil)
searchController.delegate = self.childOneTableViewController
searchController.searchResultsUpdater = self.childOneTableViewController
searchController.dimsBackgroundDuringPresentation = false
self.navigationItem.searchController = searchController
self.definesPresentationContext = true
我正在使用分段控件在两个childViewControllers之间切换。
我想要做的是隐藏第二个childViewController的searchBar,但到目前为止我只能通过将searchController设置为nil来实现,这不是我想做的事情。
我已经阅读了许多帖子,强调了在进行segue时要做什么,但这是一个稍微不同的情况。
我认为显而易见的是:添加secondChildViewController时,searchController.isActive = false:
@IBAction func segmentedControlValueChanged(_ sender: UISegmentedControl) {
if segmentedControl.selectedSegmentIndex == 0 {
remove(asChildViewController: childOneTableViewController)
add(asChildViewController: childTwoTableViewController)
navigationItem.searchController!.isActive = true
} else {
remove(asChildViewController: childOneTableViewController)
add(asChildViewController: childTwoTableViewController)
navigationItem.searchController!.isActive = false
}
}
然而这没有任何效果,searchController在两个childViewControllers
中仍然可见答案 0 :(得分:2)
搜索栏将在两个子视图控制器上保持可见,因为您将其设置为父控制器的导航项。要隐藏第二个子控制器的搜索栏,您可以在else语句中执行以下操作:searchController.searchBar.hidden = true
激活搜索控制器不会显示或隐藏搜索栏,它会影响搜索结果视图控制器是否显示。更多关于here。