2

自分でこれを理解することができないことを許してください。私は Swift で iOS を手に入れましたが、objective-c についてはあまり学びませんでした。

uisearchbarセクションの複数の配列で構成されるグループ化されたテーブル ビューをフィルター処理するを構築しようとしています。基本的に、検索結果を取得するには、他の配列のNSMutableArrayビルドをフィルタリングする必要があります (通常の配列は「妥当な時間」でコンパイルできませんでした)。私はこのチュートリアルを見て、必要なものを手に入れましたが、残念ながら、この場合、Obj-cをswiftに変換することに関しては、私は最高ではありません. これを行うのに役立つヘルプ(翻訳)または他のチュートリアルへの指示は大歓迎です。私は一晩中検索して検索し、いじくり回してきました-しかし、私は陥りました、私は助けが必要です.

編集:まだ答えられていません

4

2 に答える 2

1

Objective-C のコードに似ていますが、ここから始めましょう

ビュー コントローラー、テーブル ビュー、および検索バー コンポーネントを作成したら、ViewController クラスで、次のように項目を ViewController に委任する必要があります。

tableView.delegate = self
tableView.dataSource = self
searchBar.delegate = self

そして、次のようなメソッドを実装(オーバーライド)する必要があります

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    filtered = data.filter({ (text) -> Bool in
        let tmp: NSString = text
        let range = tmp.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
        return range.location != NSNotFound
    })
    if(filtered.count == 0){
        searchActive = false;
    } else {
        searchActive = true;
    }
    self.tableView.reloadData()
}

ここで説明します

参考動画のYoutubeもあります

それが役に立てば幸い

于 2015-05-18T09:26:53.317 に答える
0

これらの UISearchBarDelegate メソッドをクラスに追加します。クラスは、コードself.yourSearchBar.delegate = selfまたはストーリーボードを使用して、このプロトコルを確認する必要があります。

   func searchBarTextDidEndEditing(searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
}


func searchBarCancelButtonClicked(searchBar: UISearchBar) {

    searchBar.text = ""
    searchBar.resignFirstResponder()
    self.searchedArrayToDisplay = self.listDataArray
}


func searchBarSearchButtonClicked(searchBar: UISearchBar) {

    searchBar.resignFirstResponder()
}


func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    if searchText == "\n" {

        searchBar.resignFirstResponder()
    } else if searchText == "" {

    self.searchedArrayToDisplay = self.listDataArray
    } else {

        self.filterContentForSearchText(searchText)
    }
}


func filterContentForSearchText(searchText: String) {

    self.searchedArrayToDisplay = self.listDataArray.filter({(eachObject: [String:AnyObject]) -> Bool in

        let name = eachObject["name"] as! String
        let stringMatch = name.lowercaseString.rangeOfString(searchText.lowercaseString)
        let result = stringMatch != nil ? true : false
        return result
    })
}

現在、インデックス パス メソッドのセル内

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

        let cell : UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Value1, reuseIdentifier:"cell")
        var object = self.searchedArrayToDisplay[indexPath.row]
}
于 2015-05-18T10:37:44.880 に答える