亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UISearchController怎么在iOS 中使用

發布時間:2021-03-30 17:48:09 來源:億速云 閱讀:239 作者:Leah 欄目:移動開發

今天就跟大家聊聊有關UISearchController怎么在iOS 中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一般用法

  1. 在父控制器中創建子控制器

  2. 用子控制器創建 UISearchController,通常會把 UISearchController 變成父控制器的屬性

  3. 設置 UISearchController 的searchResultsUpdater屬性

  4. 通常會在父控制器上放置 UISearchController 的searchBar

  5. 把父控制器definesPresentationContext屬性設置為 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屬性一般設置為父控制器或子控制器。這個屬性的值要符合 UISearchResultsUpdating 協議,實現updateSearchResults(for searchController: UISearchController)方法。這個方法會在searchBar變為第一響應者(比如,當用戶點擊搜索框,鍵盤彈出),以及搜索關鍵詞改變時調用。在這個方法中寫入執行搜索、更新 UI 的代碼。

以上代碼將子控制器作為 UISearchController 的searchResultsUpdater。假設子控制器的數據源為 allStrings 和 strings,均為含 String 的 Array。其中,allStrings 為常量,包含所有的 String;strings 包含符合搜索條件的 String,需要在用戶輸入時更新。搜索條件為,含有用戶輸入的內容,不區分大小寫。用 UITableView 展示搜索結果。在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()
}

改變樣式

默認情況下,用戶點擊搜索框,導航欄(navigation bar)隱藏,UISearchBar 上移,下面能看到父控制器,但有灰色蒙版遮擋。點擊灰色蒙版,退回父控制器。把 UISearchController 的hidesNavigationBarDuringPresentation屬性設置為false,則導航欄不隱藏。把 UISearchController 的dimsBackgroundDuringPresentation屬性設置為false,則灰色蒙版不顯示,能點擊父控制器。

搜索框為空時,子控制器隱藏

如果 UISearchController 的searchBar已經放置在父控制器上,用戶點擊搜索框時,UISearchBar 會上移至屏幕頂部,鍵盤彈出。此時會調用updateSearchResults(for searchController: UISearchController)方法,但子控制的view沒有出現,isHidden為 true。輸入內容后,子控制器的view才出現。清空輸入的內容,子控制器的view消失。如果要在搜索框為空時也顯示子控制器,在updateSearchResults(for searchController: UISearchController)方法中加入searchController.searchResultsController?.view.isHidden = false即可。

代碼展示 UISearchBar 和子控制器的方法

在父控制中可以用代碼來展示 UISearchBar 和子控制器,具體實現方法要看 UISearchController 的searchBar是否放置在父控制器上。

如果 UISearchController 的searchBar放置在父控制器上

UISearchBar 上移,彈出鍵盤(和用戶點擊搜索框一樣的效果)

searchController.searchBar.becomeFirstResponder()

UISearchBar 上移,但不彈出鍵盤

present(searchController, animated: true, completion: nil)

或者

searchController.isActive = true

如果 UISearchController 的searchBar不在父控制器上

UISearchBar 從頂部出現,彈出鍵盤

present(searchController, animated: true, completion: nil)

看完上述內容,你們對UISearchController怎么在iOS 中使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴海县| 丰都县| 舒城县| 贺州市| 额敏县| 郁南县| 巫山县| 晋中市| 刚察县| 高州市| 抚宁县| 新龙县| 海林市| 琼中| 渑池县| 富川| 苏州市| 宜章县| 木里| 搜索| 东乡| 响水县| 武城县| 宾阳县| 盈江县| 临泽县| 贵德县| 伊春市| 竹溪县| 砚山县| 永昌县| 宁波市| 家居| 东兰县| 葫芦岛市| 齐河县| 满洲里市| 平凉市| 肥西县| 抚松县| 紫金县|