搜索栏搜索时的启动指示器



我需要创建一个搜索栏来搜索产品。为此,我正在使用搜索控制器,并且我有一个用于按名称搜索产品的 api。我想要这个:从 api 搜索时的动画指示器正在处理中。我该如何解决这个问题?这是我从 API 搜索的代码:

func getTovar(){
    Alamofire.request(.GET, "myApiurl")
        .responseJSON { response in
            guard response.result.error == nil else {
                // got an error in getting the data, need to handle it
                print("error calling GET on /todos/1")
                print(response.result.error!)
                self.indicator.stopAnimating()
                UIApplication.sharedApplication().networkActivityIndicatorVisible = false
                return
            }
            if let value = response.result.value {
                // handle the results as JSON, without a bunch of nested if loops
                let product = JSON(value)
                for (_,subJson):(String, JSON) in product {
                    let img:NSData
                    if let src=subJson["sphoto"].string{
                        if src.containsString("jpg"){
                            let range = src.startIndex.advancedBy(2)..<src.endIndex
                            let substring = src[range]
                            var urlString = "http://admin.unimax.kz/(substring)"
                            urlString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
                            if let dataFromURL=NSData(contentsOfURL: NSURL(string: urlString)!){
                                img=dataFromURL
                            }
                            else{
                                img=NSData(contentsOfURL: NSURL(string: "http://zhaksy-adam.kz/Images/domalak.png")!)!
                            }
                        }
                        else{
                            img=NSData(contentsOfURL: NSURL(string: "http://zhaksy-adam.kz/Images/domalak.png")!)!
                        }
                    }
                    else{
                        img=NSData(contentsOfURL: NSURL(string: "http://zhaksy-adam.kz/Images/domalak.png")!)!
                    }
                    //Do something you want
                    let id=subJson["id"].int!
                    let name=subJson["name"].string!
                    let price=subJson["price"].int!
                    let description=subJson["description"].rawString()
                    self.data.append(Product(id:id,title: name, img: UIImage(data: img), price: price,desc:description!))
                }
            }
    }
}

这是我的搜索结果更新:

func updateSearchResultsForSearchController(searchController: UISearchController)
{
    searchController.searchBar.addSubview(indicator)
    indicator.stopAnimating()
    getTovar()
    for item in data {
        if item.productTitle.containsString(searchController.searchBar.text!){
            filteredTableData.append(item)
        }
    }
    indicator.stopAnimating()
    self.tableView.reloadData()
}

你需要像这样更改代码像这样更改您的 getTover

func getTovar(){
    Alamofire.request(.GET, "myApiurl")
        .responseJSON { response in
            guard response.result.error == nil else {
                // got an error in getting the data, need to handle it
                print("error calling GET on /todos/1")
                print(response.result.error!)
                self.indicator.stopAnimating()
                UIApplication.sharedApplication().networkActivityIndicatorVisible = false
                indicator.stopAnimationg()
                return
            }
            if let value = response.result.value {
                // handle the results as JSON, without a bunch of nested if loops
                let product = JSON(value)
                for (_,subJson):(String, JSON) in product {
                    let img:NSData
                    if let src=subJson["sphoto"].string{
                        if src.containsString("jpg"){
                            let range = src.startIndex.advancedBy(2)..<src.endIndex
                            let substring = src[range]
                            var urlString = "http://admin.unimax.kz/(substring)"
                            urlString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
                            if let dataFromURL=NSData(contentsOfURL: NSURL(string: urlString)!){
                                img=dataFromURL
                            }
                            else{
                                img=NSData(contentsOfURL: NSURL(string: "http://zhaksy-adam.kz/Images/domalak.png")!)!
                            }
                        }
                        else{
                            img=NSData(contentsOfURL: NSURL(string: "http://zhaksy-adam.kz/Images/domalak.png")!)!
                        }
                    }
                    else{
                        img=NSData(contentsOfURL: NSURL(string: "http://zhaksy-adam.kz/Images/domalak.png")!)!
                    }
                    //Do something you want
                    let id=subJson["id"].int!
                    let name=subJson["name"].string!
                    let price=subJson["price"].int!
                    let description=subJson["description"].rawString()
                    self.data.append(Product(id:id,title: name, img: UIImage(data: img), price: price,desc:description!))
                }
                indicator.stopAnimationg()
                for item in data {
                    if item.productTitle.containsString(searchController.searchBar.text!){
                        filteredTableData.append(item)
                    }
                }
                self.tableView.reloadData()
            }
    }
}

并像这样更改您的更新搜索结果搜索控制器

 func updateSearchResultsForSearchController(searchController: UISearchController){
     searchController.searchBar.addSubview(indicator)
     indicator.startAnimating()
      getTovar()
 }

希望这会有所帮助。

最新更新