mvvm中的UITextfield委托方法

时间:2018-05-07 04:53:44

标签: ios swift mvvm uitextfielddelegate

我需要在mvvm中搜索tableview。

我的viewmodel: - 搜索功能: -

 ref = Database.database().reference()

    ref?.child("Restaurants").observe(.childAdded, with: { (snapshot) in
        let rest = snapshot.value as? String
        if let actualPost = rest {


            self.restList.append(actualPost)

            print("list of rest ", self.restList)


            self.restTableView.reloadData()
        }
    })

在viewcontroller中我刚给出了textfield委托方法。

我的viewcontroller: -

 func search(searchText :String?) {

        filteredListArray = datasourceModel.dataListArray?.filter{($0.restaurantname?.range(of: searchText!, options: .caseInsensitive) != nil)}

  }

所以在textfield委托我如何搜索。如何从viewmodel获取搜索功能。如何进行搜索tableview任务

1 个答案:

答案 0 :(得分:1)

您的shouldChangeCharactersIn旁边可以调用searchViewModel搜索方法,如果它没有触发自动更新您的数据源,则需要在调用搜索后触发数据源方法

   func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        if let text = textField.text,
            let textRange = Range(range, in: text)  {
            let updatedText = text.replacingCharacters(in: textRange,
                                                       with: string)

            if updatedText.count > 2 {
                let result  = searchViewModel.search(searchText :updatedText)

                //  result Should update your data Source searchViewModel.numberOfRowsInSection , and reload tableView
            }
        }
            return true;
    }