朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
Swift NSSearchFieldの使い方





NSSearchFieldはNSTableViewと一緒に使って、NSTableViewの一覧を絞り込んでいく感じです。
NSSearchFieldに文字を入力するたびに一文字毎に絞り込まれます。
どうやっているかと言うと、検索文字を含んでいるリストをNSTableViewのDataSourceにセットします。
下記のサンプルでは、NSSearchFieldのactionSearchで絞り込みをして、NSTableViewに結果を表示しています。
NSTableViewのDataSourceにresultを設定しています。

    var twitterList: [TwitterData] = []
    var result: [TwitterData] = []

    ViewData["atmark"]IBAction func actionSearch(_ sender: NSSearchField) {
        //検索ワードの前後の空白文字を削除しています
        let searchValue = sender.stringValue.trimmingCharacters(in: .whitespaces)
        //検索ワードが入力されたら
        if searchValue != "" {
            //一時変数を作成
            var tmpValues = [TwitterData]()
            //全データについてループ
            for t in self.twitterList {
                //自作メソッドで検索ワードが含まれているか確認
                if t.containsString(searchValue) {
                    //検索ワードが含まれていたので、一時変数に追加
                    tmpValues.append(t)
                }
            }
            //検索ワードが含まれていたデータをセット
            self.result = tmpValues
        } else {
            //検索ワードが何も無いので全データをセット
            self.result = self.twitterList
        }
        //テーブルビューをリロードする
        self.tv.reloadData()
    }


    class TwitterData {
        var id: Int = -1
        var prefecture: String = ""
        var city: String = ""
        var twitter: String = ""
        var note: String = ""
        var checked: Bool = false
        var level: String = ""
        var diffTime: String = ""
        var json: JSON = nil
    
        func containsString(_ s: String) -> Bool {
            //渡された文字列を含んでいたらtrueを、含まれていなかったらfalseを返す
            if self.prefecture.contains(s) || self.city.contains(s) || self.twitter.contains(s) || self.note.contains(s) {
                return true
            }
        
            return false
        }
    }
    








良いやや良い普通やや悪い悪い

投稿日時評価コメント