iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 20
0

分類:UIKit學習

參考資料:IOS 10程式設計超進化攻略 Simon NG著

1.主要用到程式碼觀念

* searchController = UISearchController(searchResultsController:nil)
* searchController.searchResultsUpdater = self
* tableView.tableViewHeaderView = searchController.searchBar

說明:

  1. 第一行程式碼後面寫nil,代表搜尋結果會顯示於正在搜尋的視圖中。
  2. 第二行程式碼告訴搜尋控制器,哪一個物件會負責更新搜尋的結果。
  3. 第三行程式碼代表在表格的標題加上搜尋列。
    searchResultsController是用來顯示搜尋後的結果,為一個TableViewController。

2.建立方法:

2-1. 先建立出搜尋列,還沒有功能。

  1. 先產生一個TableViewController來擔任searchResultsController。
  2. 再產生一個searchController。
  3. 再以searchController的searchResultsUpdater屬性來更新資料。
    程式碼:
let searchResultsController = UITableViewController()
var searchController:UISearchController?

在ViewDidLoad()中寫入:

searchController = UISearchController(searchResultsController: searchResultsController)
        tableView.tableHeaderView = searchController?.searchBar

//
searchController?.searchResultsUpdater = self

讓原本的TableViewController遵守UISearchResultsUpdating這個protocol
並實作協定中的方法updateSearchResults(for searchController: UISearchController)

func updateSearchResults(for searchController: UISearchController) {
        //使用者輸入要查詢的
        if let searchWord = searchController.searchBar.text{
            resultArray = fruitArray.filter({ (filterFruit) -> Bool in
                if filterFruit.lowercased().contains(searchWord.lowercased()){
                    return true
                }else{
                    return false
                }
            })
            //讓顯示結果的tableView去reloadData
            self.searchResultsController.tableView.reloadData()
        }
    }

完整的程式碼:
https://github.com/ethan510010/SearchBarPractice.git


上一篇
Swift-Day 19:練習連接API(結果失敗,再想想哪邊出問題,換了另外一個API結果就跑得出來)
下一篇
Swift-Day21:以假JSON檔練習載入TableView並連接segue至下個WebView
系列文
Swift零基礎實作旅遊景點app30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言