将 UISearchController 连接到 UISearchBar 而无需将搜索栏嵌入到表视图或导航栏中
Connect UISearchController to UISearchBar without embedding the search bar in the tableview or in the navigation bar
首先,如果这个问题听起来太愚蠢了(请随意跳过),我们深表歉意。
在我的应用中,我需要创建一个搜索区域:基本上,我应该创建一个搜索栏,当用户点击其中的一些字符时,我会显示一个包含结果的表格视图。
在我的主要 ViewController
中,我做了以下事情:
var resultSearchController:UISearchController? = nil
override func viewDidLoad() {
super.viewDidLoad()
// my results table is 'SearchTable' in my storyboard
let searchTable = storyboard!.instantiateViewController(withIdentifier: "SearchTable") as! SearchTable
resultSearchController = UISearchController(searchResultsController: searchTable)
resultSearchController?.searchResultsUpdater = searchTable as? UISearchResultsUpdating
resultSearchController?.hidesNavigationBarDuringPresentation = false
resultSearchController?.dimsBackgroundDuringPresentation = true
definesPresentationContext = true
当然,如果我添加以下内容,一切正常:
let searchBar = resultSearchController!.searchBar
searchBar.sizeToFit()
searchBar.placeholder = "Search..."
// this line embeds the search bar in the navigation bar
navigationItem.titleView = resultSearchController?.searchBar
UISearchController
创建一个 UISearchBar
并将搜索控制器的 searchBar
属性 设置为它。
问题是我想要一个不同的东西,那就是:
- 搜索栏应该不嵌入到导航栏中;
- 搜索栏应该不嵌入到表格视图本身;
我的搜索栏应该始终可见、固定并放置在导航栏的正下方:我只是在故事板中放置了一个 UISearchBar
及其约束,并将其连接到 viewcontroller 作为IBOutlet
.
但是,此时我不知道如何将我的搜索栏关联到 resultSearchController
。我怎么办?可能吗?
你做了所有的努力,你错过的事情对你所做的来说是微不足道的。
基本上您应该使用代码将 UISearchBar
resultSearchController!.searchBar
作为子视图添加到视图中。我不认为 Storyboard 可以做到这一点,这可能会让你感到困惑。
首先,如果这个问题听起来太愚蠢了(请随意跳过),我们深表歉意。
在我的应用中,我需要创建一个搜索区域:基本上,我应该创建一个搜索栏,当用户点击其中的一些字符时,我会显示一个包含结果的表格视图。
在我的主要 ViewController
中,我做了以下事情:
var resultSearchController:UISearchController? = nil
override func viewDidLoad() {
super.viewDidLoad()
// my results table is 'SearchTable' in my storyboard
let searchTable = storyboard!.instantiateViewController(withIdentifier: "SearchTable") as! SearchTable
resultSearchController = UISearchController(searchResultsController: searchTable)
resultSearchController?.searchResultsUpdater = searchTable as? UISearchResultsUpdating
resultSearchController?.hidesNavigationBarDuringPresentation = false
resultSearchController?.dimsBackgroundDuringPresentation = true
definesPresentationContext = true
当然,如果我添加以下内容,一切正常:
let searchBar = resultSearchController!.searchBar
searchBar.sizeToFit()
searchBar.placeholder = "Search..."
// this line embeds the search bar in the navigation bar
navigationItem.titleView = resultSearchController?.searchBar
UISearchController
创建一个 UISearchBar
并将搜索控制器的 searchBar
属性 设置为它。
问题是我想要一个不同的东西,那就是:
- 搜索栏应该不嵌入到导航栏中;
- 搜索栏应该不嵌入到表格视图本身;
我的搜索栏应该始终可见、固定并放置在导航栏的正下方:我只是在故事板中放置了一个 UISearchBar
及其约束,并将其连接到 viewcontroller 作为IBOutlet
.
但是,此时我不知道如何将我的搜索栏关联到 resultSearchController
。我怎么办?可能吗?
你做了所有的努力,你错过的事情对你所做的来说是微不足道的。
基本上您应该使用代码将 UISearchBar
resultSearchController!.searchBar
作为子视图添加到视图中。我不认为 Storyboard 可以做到这一点,这可能会让你感到困惑。