Когда я запускаю свое приложение, появляются две панели поиска, но на раскадровке отображается только одна - PullRequest
2 голосов
/ 30 октября 2019

В настоящее время я создаю табличное представление и заметил, что после заполнения табличного представления я получаю два поля панели поиска. Мое первоначальное намерение состояло в том, чтобы появилось только одно поле панели поиска (показанное на моем интерфейсе), я не могу понять, что это происходит. Когда я пытаюсь удалить строку поиска из моего интерфейса, то мое табличное представление не загружает и не заполняет данные.

Вот снимок экрана раскадровки интерфейса:

Single Search bar

Вот снимок экрана, когда я запускаю приложение:

Double Search Bars

Вот некоторый код, включая мой viewDidLoad: РЕДАКТИРОВАТЬ : добавлен код TableView

class AddHarvestPlanViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {

    @IBOutlet weak var AddHarvestPlanPluCodeTable: UITableView!

    let searchController = UISearchController(searchResultsController: nil)

    override func viewDidLoad() {
        super.viewDidLoad()
        findPluCodeParents(searchTextField: "apple")
        searchController.searchResultsUpdater = self
        searchController.obscuresBackgroundDuringPresentation = false
        searchController.searchBar.placeholder = "Find your Commodity"
        navigationItem.searchController = searchController
        definesPresentationContext = true

        AddHarvestPlanPluCodeTable.delegate = self
        AddHarvestPlanPluCodeTable.dataSource = self
        AddHarvestPlanPluCodeTable.reloadData()

    }
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        var count = harvestCommodities.count
        return count
    }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "AddPluCodeCustomCell", for: indexPath) as! AddPluCodeCustomCell
        do{
            let item = harvestCommodities[indexPath.row]
            cell.commodity?.text = item.plu_code_commodity
            cell.package?.text = "Cases"
            return cell
        }
    }
func findPluCodeParents(searchTextField:String){
        let searchText =  searchTextField


        print("Searching for....",searchTextField)
        let aggriEndpoint: String = "https://xxxx.xxxx.com/xxxx/xxxxx"

        let url = URL(string:aggriEndpoint)
        var urlRequest = URLRequest(url:url!)
        urlRequest.httpMethod = "GET"

        let session = URLSession.shared
        print("running task")
        let task = session.dataTask(with: urlRequest, completionHandler: {data,response,error -> Void in
            do{
                print("All finiished")
                print(data)
                if let json = try JSONSerialization.jsonObject(with: data!) as? [[String:Any?]]{
                    //                print(json)
                    for item in json{
                        print(item as? [String:Any?])

                        var active = item["active"] as? Bool
                        let cases_per_week  = (item["cases_per_week"] as! NSString).doubleValue
                        var cases_per_palette  = item["cases_per_pallette"] as? Int
                        var lbs_per_week = (item["lbs_per_week"] as! NSString).doubleValue
                        var cases_per_week_avg = item["cases_per_week_avg"] as? Int
                        var pounds_per_case = item["pounds_per_case"] as? Int
                        var repeat_harvest = item["repeat_harvest"] as? Bool
                        var harvest_week_count = item["harvest_week_count"] as? Int
                        var plant_days = item["plant_days"] as? Int
                        var pounds_per_acre = item["pounds_per_acre"] as? Int
                        var options = item["options"] as? Int
                        var plu_code_variety = item["plu_code_variety"] as? String
                        var plu_code_commodity = item["plu_code_commodity"] as? String
                        var id = item["id"] as? Int
                        var plu_code = item["plu_code"] as? Int
                        var acres = item["acres"] as? Int

                        self.harvestCommodities.append(PluCode(id: id!, commodity: plu_code_commodity!, cases_per_week_avg: cases_per_week_avg!, repeat_harvest: repeat_harvest!, cases_per_week: cases_per_week, lbs_per_week: lbs_per_week, acres: acres!, plu_code: plu_code!, active: active!, options: options!, plant_days: plant_days!, plu_code_commodity: plu_code_commodity!, plu_code_variety: plu_code_variety!, cases_per_palette: cases_per_palette!, harvest_week_count: harvest_week_count!, pounds_per_acre: pounds_per_acre!))
                    }
                }

                DispatchQueue.main.async {
                    self.AddHarvestPlanPluCodeTable.reloadData()
                }

            } catch let error{
                print("error")
            }
        })

        task.resume()

    }


1 Ответ

2 голосов
/ 30 октября 2019

Либо удалите код, в котором вы создаете верхнюю панель поиска («let searchController = UISearchController (searchResultsController: nil)»), а затем подключите IBOutlet к тому, который вы создали в интерфейсе, к вашему файлу swift, или удалитеодин на раскадровке и используйте тот, который вы создали в своем коде, и подключите результаты к вашему табличному представлению

...