[swift4] tableViewにUISearchBarを実装する

tableViewにUISearchBarを実装するには以下のコードを実装

class SecondViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
 
 @IBOutlet weak var tableView: UITableView!
 var searchBar = UISearchBar()
 
 var posts:[String] = ["Google","Amazon","Facebook","Apple"]

 //MARK: didload
 override func viewDidLoad() {
  super.viewDidLoad()
 
  tableView.dataSource = self
  tableView.delegate = self
 
  searchBar = UISearchBar()
  searchBar.delegate = self as! UISearchBarDelegate
  searchBar.frame = CGRect(x:0, y:0, width:self.view.frame.width, height:42)
  searchBar.layer.position = CGPoint(x: self.view.bounds.width/2, y: 89)
  searchBar.searchBarStyle = UISearchBarStyle.default
  searchBar.showsSearchResultsButton = false
  searchBar.placeholder = "検索"
  searchBar.setValue("キャンセル", forKey: "_cancelButtonText")
  searchBar.tintColor = UIColor.red
 
  tableView.tableHeaderView = searchBar
 
 }
 
 
 override func didReceiveMemoryWarning() {
  super.didReceiveMemoryWarning()
 }
 
 //MARK: TableView Method
 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  return posts.count
 }

 //MARK: cellSetting
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
  return cell
 }
 
 //MARK: SearchBarAction
 // 検索ボタンが押された時に呼ばれる
 func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
  print("searchBarSearchButtonClicked")
  self.view.endEditing(true)
  searchBar.showsCancelButton = true
  searchWord = searchBar.text!
  self.searchResults = posts.filter{
   $0.lowercased().contains(searchBar.text!.lowercased())
  }
  self.tableView.reloadData()
 }
 
 // キャンセルボタンが押された時に呼ばれる
 func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
  print("searchBarCancelButtonClicked")
  searchBar.showsCancelButton = false
  self.view.endEditing(true)
  searchBar.text = ""
  tableView.reloadData()
 }
 
 // テキストフィールド入力開始前に呼ばれる
 func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
  print("searchBarShouldBeginEditing")
  searchBar.showsCancelButton = true
  return true
 }
 
}

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です