欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS UISearchController的使用方法

 更新時間:2017年02月21日 10:24:32   作者:Silence_cnblogs  
本文主要介紹了iOS UISearchController的使用方法,具有很好的參考價值,下面跟著小編一起來看下吧

UISearchController 讓用戶在 UISearchBar 上輸入搜索關(guān)鍵詞,展示搜索結(jié)果或者進行其他操作。UISearchController 把兩個控制器(UIViewController)連在一起。父控制器放置 UISearchBar 控件。當用戶點擊搜索框時,UISearchBar 會移到屏幕頂部;輸入搜索關(guān)鍵詞,UISearchBar 下面出現(xiàn)子控制器的view。當然,也可以用代碼使 UISearchBar 和子控制器展示出來,即便父控制器沒有放置 UISearchBar。

一般用法

  1. 在父控制器中創(chuàng)建子控制器
  2. 用子控制器創(chuàng)建 UISearchController,通常會把 UISearchController 變成父控制器的屬性
  3. 設(shè)置 UISearchController 的searchResultsUpdater屬性
  4. 通常會在父控制器上放置 UISearchController 的searchBar
  5. 把父控制器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é)議,實現(xiàn)updateSearchResults(for searchController: UISearchController)方法。這個方法會在searchBar變?yōu)榈谝豁憫?yīng)者(比如,當用戶點擊搜索框,鍵盤彈出),以及搜索關(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()
}

改變樣式

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

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

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

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

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

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

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

searchController.searchBar.becomeFirstResponder()

UISearchBar 上移,但不彈出鍵盤

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

或者

searchController.isActive = true

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

UISearchBar 從頂部出現(xiàn),彈出鍵盤

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

搜索框一出來就成為第一響應(yīng)者,鍵盤會彈出,不知道怎么禁止鍵盤彈出。當然,展示搜索框卻不彈出鍵盤,是奇怪的需求。

代碼已上傳GitHub:https://github.com/Silence-GitHub/SearchControllerDemo

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • iOS中鍵盤 KeyBoard 上添加工具欄的方法

    iOS中鍵盤 KeyBoard 上添加工具欄的方法

    大iOS中 鍵盤 KeyBoard 上怎么添加工具欄呢?大致思路是提前創(chuàng)建好工具欄,在鍵盤彈出的時候?qū)⒐ぞ邫陲@示出來,在鍵盤消失的時候讓工具欄隱藏。具體實現(xiàn)代碼大家參考下本文吧
    2017-08-08
  • iOS創(chuàng)建對象的不同姿勢詳解

    iOS創(chuàng)建對象的不同姿勢詳解

    這篇文章主要介紹了iOS創(chuàng)建對象的不同姿勢,文中介紹的很詳細,對大家具有一定的參考價值,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-02-02
  • ios實現(xiàn)簡單隨便移動的AR功能

    ios實現(xiàn)簡單隨便移動的AR功能

    這篇文章主要為大家詳細介紹了ios實現(xiàn)簡單隨便走的AR功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Objective-C 代碼與Javascript 代碼相互調(diào)用實例

    Objective-C 代碼與Javascript 代碼相互調(diào)用實例

    這篇文章主要介紹了Objective-C 代碼與Javascript 代碼相互調(diào)用實例的相關(guān)資料,現(xiàn)在的APP 應(yīng)用有時候會調(diào)用網(wǎng)頁上的內(nèi)容,為了增加用戶體驗,這里寫下個實例,需要的朋友可以參考下
    2016-10-10
  • 淺談iOS推送證書生成pem文件(詳細生成過程)

    淺談iOS推送證書生成pem文件(詳細生成過程)

    這篇文章主要介紹了淺談iOS推送證書生成pem文件(詳細生成過程),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • iOS開發(fā)技巧之WeakSelf宏的進化詳解

    iOS開發(fā)技巧之WeakSelf宏的進化詳解

    在程序中我們經(jīng)常用到Block,但寫weak self 時會比較繁瑣,下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)技巧之WeakSelf宏的進化的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們一起來看看吧
    2018-05-05
  • iOS實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫

    iOS實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫

    這篇文章主要給大家介紹了利用iOS如何實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫,文中給出了詳細步驟實現(xiàn)代碼,對大家的學(xué)習(xí)和理解很有幫助,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • IOS開發(fā)中禁止NavigationController的向右滑動返回

    IOS開發(fā)中禁止NavigationController的向右滑動返回

    這篇文章主要介紹了IOS開發(fā)中禁止NavigationController的向右滑動返回的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • iOS開發(fā)中Quartz2D的基本使用方式舉例

    iOS開發(fā)中Quartz2D的基本使用方式舉例

    這篇文章主要介紹了iOS開發(fā)中Quartz2D的基本使用方式舉例,需要的朋友可以參考下
    2015-11-11
  • iOS 控件封裝(又名擰螺絲)之排序按鈕的開發(fā)

    iOS 控件封裝(又名擰螺絲)之排序按鈕的開發(fā)

    排序按鈕是實際開發(fā)中比較常見的一種控件,這篇文章主要介紹了iOS 開發(fā)之排序按鈕,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12

最新評論