Фильтровать данные из TableView - PullRequest
0 голосов
/ 03 мая 2018

Как мне отфильтровать tableView по строке поиска? Я получаю данные в tableView из базы данных Firebase, и моя строка поиска находится внутри navigationBar.

Это мой код:

class TableViewCustomer: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var ref:DatabaseReference!
    var customerList = [CustomerModel]()
    lazy var searchBar: UISearchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: 300, height: 20))


    @IBOutlet weak var tableViewCustomer: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        searchBar.placeholder = "Search"
        navigationItem.titleView = searchBar

        if let textfield = searchBar.value(forKey: "searchField") as? UITextField {
            textfield.textColor = UIColor.gray
            if let backgroundview = textfield.subviews.first {
                backgroundview.backgroundColor = UIColor.white
                backgroundview.layer.cornerRadius = 18
                backgroundview.clipsToBounds = true
            }
        }

        tableViewCustomer.delegate = self
        tableViewCustomer.dataSource = self

        ref = Database.database().reference().child("Customer");

        ref.observe(DataEventType.value, with: { (snapshot) in
            if snapshot.childrenCount > 0 {
                self.customerList.removeAll()
                for results in snapshot.children.allObjects as! [DataSnapshot] {
                    let results = results.value as? [String: AnyObject]
                    let name = results?["Name and surname"]
                    let phone = results?["Phone"]
                    let company = results?["Company name"]
                    let myCustomer = CustomerModel(name: name as? String, phone: phone as? String, company: company as? String)
                    self.customerList.append(myCustomer)
                }
                self.tableViewCustomer.reloadData()
            }
        })
    }

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

    @objc func buttonAction(sender: UIButton!) {
        dismiss(animated: true, completion: nil)
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return customerList.count
    }

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableViewCustomer.dequeueReusableCell(withIdentifier: "cellCustomer") as! TableViewCellCustomer
        cell.layer.backgroundColor = UIColor.init(white: 1, alpha: 0.7).cgColor
        let customer: CustomerModel
        customer = customerList[indexPath.row]
        cell.nameLabel.text = customer.name
        cell.phoneLabel.text = customer.phone
        cell.companyLabel.text = customer.company

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "description", sender: self)
    }
}

1 Ответ

0 голосов
/ 07 мая 2018

Добавьте панель поиска и пустой массив. В процессе поиска добавьте подходящие элементы в пустой массив, а затем удалите их из массива. Используйте новый массив для индексации в вашем пользовательском интерфейсе.

...