поиск в таблице на основе выбора даты - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь выполнить поиск в моем табличном представлении на основе даты с использованием средства выбора даты, но по какой-то причине таблица не обновляется.

цель состоит в том, чтобы отобразить ячейки, которые соответствуют только дате, выбранной из средства выбора даты.Вот мой код представления таблицы:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell =  tableView.dequeueReusableCell(withIdentifier: "customCell", for: indexPath) as! CustomTableViewCell
        let client = clinetarr[indexPath.row]

        var output: String = ""
        var resp: String = ""
        var datee: String = ""
        var index: String = ""

cell.message.numberOfLines=0

        if let i = client["index"] as? String {
            index = "\(i) "  //using space as separator

        }
        if let date = client["date"] as? String {
            datee = "\(date) "  //using space as separator


        }


        if let response = client["response"] as? String {
            resp = "\(response) "

        }

        if let message = client["message"] as? String {
            output = message
        }
        cell.indextnumber.text = index
        cell.response.text = resp
        cell.date.text = datee
        cell.message.text = output


        return cell
    }

вот мой код выбора даты и готово, кнопка fuunc

 func createDatePicker() {


        let toolbar = UIToolbar()
        toolbar.sizeToFit()


        let done = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donebuttom))
        toolbar.setItems([done], animated: false)

        dateField.inputAccessoryView = toolbar
        dateField.inputView = picker


        picker.datePickerMode = .date
    }

    @objc func donebuttom() -> UITableViewCell{

        var output: String = ""
        var resp: String = ""
        var datee: String = ""
        var index: String = ""

        // format date
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"

        let dateString = formatter.string(from: picker.date)
        let indexPath = IndexPath(row: 0, section: 0)
        let cell = tableView.cellForRow(at: indexPath) as! CustomTableViewCell
        let client = clinetarr[indexPath.row]
        dateField.text = "\(dateString)"


        if let date = client["date"] as? String {

            let dateee = "\(date) "

             let last = dateee.prefix(10)
            if last == dateString{
                if let i = client["index"] as? String {
                    index = "\(i) "

                }
                if let date = client["date"] as? String {
                    datee = "\(date) "  //using space as separator


                }


                if let response = client["response"] as? String {
                    resp = "\(response) "

                }

                if let message = client["message"] as? String {
                    output = message
                }
                tableView.reloadData()
            }
            else{
                resp=""
                 tableView.reloadData()
            }

        }

        cell.indextnumber.text = index
        cell.response.text = resp
        cell.date.text = datee
        cell.message.text = output

        tableView.reloadData()
        self.view.endEditing(true)
        return cell
    }

по какой-то причине таблица не обновляется Заранее спасибо

Спасибо за каждый ответ, который я решаю.Особая благодарность за Дункана С. Ответ был прост, но я думаю, мой мозг был зажарен.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вот мой ответ:

@objc func donebuttom() {

    // format date
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd"

     dateString = formatter.string(from: picker.date)

    dateField.text = "\(dateString)"
    let x =  dateString.count
     print ("here is x \(x)")

    doneclick = true
    tableView.reloadData()
    self.view.endEditing(true)

}

Вот мой стол Посмотреть

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell =  tableView.dequeueReusableCell(withIdentifier: "customCell", for: indexPath) as! CustomTableViewCell
       client = clinetarr[indexPath.row]


cell.message.numberOfLines=0
        if doneclick == true{
            if let date = client["date"] as? String {

                let dateee = "\(date)"
                let last = dateee.prefix(10)
                let y = last.count

                if last == dateString{

                    if let i = client["index"] as? String {
                        index = "\(i) "  //using space as separator

                    }
                    if let date = client["date"] as? String {
                        datee = "\(date) "  //using space as separator

                    }

                    if let response = client["response"] as? String {
                        //            resp = "\(response) "
                        let x = "\(response) "
                        print ("\(x) ")
                        if x.contains("1"){
                            resp = "Present"
                        }
                        else if x.contains("2"){
                            resp = "Absent"
                        }

                        else if x.contains("3"){
                            resp = "Tardy"
                        }

                    }

                    if let message = client["message"] as? String {
                        output = message
                    }
                }else{
                    index = ""
                    datee = ""
                    resp = ""
                    output = ""
                }
            }

        }else{
        if let i = client["index"] as? String {
            index = "\(i) "  //using space as separator

        }

        if let date = client["date"] as? String {

            datee = "\(date) "  //using space as separator


        }


        if let response = client["response"] as? String {
//            resp = "\(response) "
            let x = "\(response) "
            print ("\(x) ")
            if x.contains("1"){
                resp = "Present"
            }
            else if x.contains("2"){
                resp = "Absent"
            }

            else if x.contains("3"){
                resp = "Tardy"
            }

        }

        if let message = client["message"] as? String {
            output = message
        }
        }
        cell.indextnumber.text = index
        cell.response.text = resp
        cell.date.text = datee
        cell.message.text = output


        return cell
    }
0 голосов
/ 25 июня 2018

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

Если вы хотите отфильтровать табличное представление, вам нужно создать новый массив с подмножеством элементов, которые вы хотите отобразить, напишите свой источник данныхметоды, чтобы они знали, использовать отфильтрованный список элементов, а затем вызвать reloadData () в табличном представлении.Табличное представление позаботится о том, чтобы определить количество секций и строк и отобразить ячейки для отфильтрованных данных.

...