У меня есть 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)
}
}