Как создать текстовое поле, которое может содержать несколько значений, например .email to: поле, содержащее несколько адресов получателей электронной почты - PullRequest
0 голосов
/ 15 июня 2019

У меня есть UITextField, который имеет представление выбора как входное представление. Выбор просмотра отображает данные из массива строк, хранящегося в NSUSERDEFAULTS (например, ["horse", "cat", "camel", "cow", "parrot", "peacock" ]). Мне нужно выбрать несколько значений из средства выбора и отобразить его в одном UITextField, как в поле электронной почты для:. Не могли бы вы предоставить некоторые материалы для этого?

В настоящее время я могу выбрать одно значение из средства выбора и установить для текстового поля это значение. Нужно знать, как выбрать несколько значений из одного компонента средства выбора и установить его для одного текстового поля.

PFB код, который я попробовал

class ViewController: UIViewController,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource {



    var item = String()
    var itemsaved = [String]()

    @IBOutlet var searchTextField: UITextField!
    @IBOutlet var picker: UIPickerView!


    let itemArray = ["camel","cow","horse","duck","parrot","peacock"]
    let defaults = UserDefaults.standard


    override func viewDidLoad() {

        super.viewDidLoad()
        defaults.set(itemArray, forKey: "stringArray")
        self.searchTextField.inputView = picker
        picker.removeFromSuperview()
        self.picker.translatesAutoresizingMaskIntoConstraints = false
        self.searchTextField.delegate = self

        searchTextField.addTarget(self, action: #selector(ViewController.editingchanged(_:)),
                                  for: UIControl.Event.editingChanged)
    }


    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return self.itemsaved.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        return self.itemsaved[row]
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        self.searchTextField.text = self.itemsaved[row]
        self.view.endEditing(true)


    }
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }



    func retreivedata(sender:UITextField) {
        if let savedItems = defaults.stringArray(forKey: "stringArray"){
            for item in savedItems{
                item.hasPrefix(sender.text!){
                    print(item)
                    itemsaved.append(item)

                }
            }
        }
    }



    @IBAction func editingchanged(_ sender: UITextField) {
        self.picker.dataSource = self
        self.picker.delegate = self
        retreivedata(sender: self.searchTextField)
    }
}
...