重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
今天就跟大家聊聊有關(guān)UISearchController怎么在iOS 中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
曲阜ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
一般用法
在父控制器中創(chuàng)建子控制器
用子控制器創(chuàng)建 UISearchController,通常會把 UISearchController 變成父控制器的屬性
設(shè)置 UISearchController 的searchResultsUpdater屬性
通常會在父控制器上放置 UISearchController 的searchBar
把父控制器definesPresentationContext屬性設(shè)置為 true
以下為父控制器代碼示例
let searchResultsVC = SearchResultsVC(allStrings: allStrings) searchController = UISearchController(searchResultsController: searchResultsVC) searchController.searchResultsUpdater = searchResultsVC; let tableView = UITableView(frame: view.bounds) tableView.dataSource = self view.addSubview(tableView) tableView.tableHeaderView = searchController.searchBar; tableView.tableFooterView = UIView() definesPresentationContext = true;
UISearchController 的searchResultsUpdater屬性一般設(shè)置為父控制器或子控制器。這個屬性的值要符合 UISearchResultsUpdating 協(xié)議,實(shí)現(xiàn)updateSearchResults(for searchController: UISearchController)方法。這個方法會在searchBar變?yōu)榈谝豁憫?yīng)者(比如,當(dāng)用戶點(diǎn)擊搜索框,鍵盤彈出),以及搜索關(guān)鍵詞改變時調(diào)用。在這個方法中寫入執(zhí)行搜索、更新 UI 的代碼。
以上代碼將子控制器作為 UISearchController 的searchResultsUpdater。假設(shè)子控制器的數(shù)據(jù)源為 allStrings 和 strings,均為含 String 的 Array。其中,allStrings 為常量,包含所有的 String;strings 包含符合搜索條件的 String,需要在用戶輸入時更新。搜索條件為,含有用戶輸入的內(nèi)容,不區(qū)分大小寫。用 UITableView 展示搜索結(jié)果。在updateSearchResults(for searchController: UISearchController)方法中,獲取 searchBar 的text,更新 strings,更新 UI。
以下是子控制器代碼示例
func updateSearchResults(for searchController: UISearchController) { strings.removeAll() if let text = searchController.searchBar.text?.uppercased(), !text.isEmpty { strings = allStrings.filter { $0.contains(text) } } tableView.reloadData() }
改變樣式
默認(rèn)情況下,用戶點(diǎn)擊搜索框,導(dǎo)航欄(navigation bar)隱藏,UISearchBar 上移,下面能看到父控制器,但有灰色蒙版遮擋。點(diǎn)擊灰色蒙版,退回父控制器。把 UISearchController 的hidesNavigationBarDuringPresentation屬性設(shè)置為false,則導(dǎo)航欄不隱藏。把 UISearchController 的dimsBackgroundDuringPresentation屬性設(shè)置為false,則灰色蒙版不顯示,能點(diǎn)擊父控制器。
搜索框?yàn)榭諘r,子控制器隱藏
如果 UISearchController 的searchBar已經(jīng)放置在父控制器上,用戶點(diǎn)擊搜索框時,UISearchBar 會上移至屏幕頂部,鍵盤彈出。此時會調(diào)用updateSearchResults(for searchController: UISearchController)方法,但子控制的view沒有出現(xiàn),isHidden為 true。輸入內(nèi)容后,子控制器的view才出現(xiàn)。清空輸入的內(nèi)容,子控制器的view消失。如果要在搜索框?yàn)榭諘r也顯示子控制器,在updateSearchResults(for searchController: UISearchController)方法中加入searchController.searchResultsController?.view.isHidden = false即可。
代碼展示 UISearchBar 和子控制器的方法
在父控制中可以用代碼來展示 UISearchBar 和子控制器,具體實(shí)現(xiàn)方法要看 UISearchController 的searchBar是否放置在父控制器上。
如果 UISearchController 的searchBar放置在父控制器上
UISearchBar 上移,彈出鍵盤(和用戶點(diǎn)擊搜索框一樣的效果)
searchController.searchBar.becomeFirstResponder()
UISearchBar 上移,但不彈出鍵盤
present(searchController, animated: true, completion: nil)
或者
searchController.isActive = true
如果 UISearchController 的searchBar不在父控制器上
UISearchBar 從頂部出現(xiàn),彈出鍵盤
present(searchController, animated: true, completion: nil)
看完上述內(nèi)容,你們對UISearchController怎么在iOS 中使用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。