LoginSignup
8
13

More than 5 years have passed since last update.

ナビゲーションバーに UISearchBar を ScopeBar 付きで表示

Posted at

ナビゲーションバーに UISearchBar を載せ、編集中のみ ScopeBar を表示する。

標準 編集中
UISearchBar.png UISearchBar+Editing.png

コードサンプルは以下の通り。高さの調整はもっとマシな方法があるかもしれない。

    override func viewDidLoad() {
        super.viewDidLoad()

        let searchBar = UISearchBar()
        searchBar.delegate = self
        searchBar.scopeBarBackgroundImage = UIImage() // 空の画像をセットしないと親 View に背景色がつく
        self.navigationItem.titleView = searchBar
    }

    // MARK: - UISearchBarDelegate

    func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool {
        searchBar.showsCancelButton = true
        searchBar.scopeButtonTitles = ["A", "B"]
        searchBar.showsScopeBar = true
        self.navigationController?.navigationBar.frame.size.height = 84
        return true
    }

    func searchBarShouldEndEditing(searchBar: UISearchBar) -> Bool {
        searchBar.showsCancelButton = false
        searchBar.scopeButtonTitles = [] // 空にしないと showsScopeBar = false にしても表示される
        searchBar.showsScopeBar = false
        self.navigationController?.navigationBar.frame.size.height = 44
        return true
    }

    func searchBarCancelButtonClicked(searchBar: UISearchBar) {
        searchBar.text = ""
        searchBar.resignFirstResponder()
    }

8
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
13