简体   繁体   English

如何在 swift 4. 中的 uipickerview 中删除和添加项目?

[英]How to remove and add items in uipickerview in swift 4.?

I have three text fields for which I am showing the same pickerview as drop down for choosing the values.我有三个文本字段,我显示与用于选择值的下拉列表相同的选择器视图。 So the condition is that I have 5 values in an array with values red, blue, green, yellow, black.所以条件是我在数组中有 5 个值,其中包含红色、蓝色、绿色、黄色、黑色。 So the condition is所以条件是

  1. These three text fields cannot have same value.这三个文本字段不能具有相同的值。 That is if for first textfield 1 if I choose red as value from picker the value " red " should be removed or disabled from picker view when I select textfield 2 or text field 3 .也就是说,如果对于第一个文本字段 1,如果我从选择器中选择红色作为值,那么当我选择文本字段 2 或文本字段 3 时,应该从选择器视图中删除或禁用值“红色”。

  2. And if I change the value of textfield 1 from red to black from picker view the value red which is disabled or removed should get added back to the pickerview when I click on textfield 2 or textfield 3.如果我从选择器视图中将文本字段 1 的值从红色更改为黑色,当我单击文本字段 2 或文本字段 3 时,禁用或删除的红色值应该被添加回选择器视图。

The code which I am trying is:我正在尝试的代码是:

import UIKit


class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

    @IBOutlet weak var textFiled1: UITextField!
    @IBOutlet weak var textFiled2: UITextField!
    @IBOutlet weak var textFiled3: UITextField!
    @IBOutlet weak var pickerView: UIPickerView!

    var Array = ["Blue", "Green", "Red", "White", "Grey"]
    var indexOfPicker = Int()

    override func viewDidLoad() {
        super.viewDidLoad()
        pickerView.dataSource = self
        pickerView.delegate = self
    }

    @IBAction func minusButton(_ sender: UIButton) {
        if Array.count != 0 {
            Array.remove(at: indexOfPicker)
            pickerView.reloadAllComponents()
        }
    }

    @IBAction func plusButton(_ sender: UIButton) {
        if textFiled.text != "" {
            Array.append(textFiled.text!)
            pickerView.reloadAllComponents()
        }
    }

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

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

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return Array[row]
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        indexOfPicker = row
    }    
}
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate {

    @IBOutlet weak var textFiled1: UITextField!
    @IBOutlet weak var textFiled2: UITextField!
    @IBOutlet weak var textFiled3: UITextField!
    @IBOutlet weak var pickerView: UIPickerView!

    var selectedTextField:UITextField?

    var colorsArray = ["Blue", "Green", "Red", "White", "Grey"]

    override func viewDidLoad() {
        super.viewDidLoad()

        textFiled1.delegate = self
        textFiled2.delegate = self
        textFiled3.delegate = self

        pickerView.dataSource = self
        pickerView.delegate = self
    }

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        let tempArr = colorsArray.filter { ![textFiled1.text!,textFiled2.text!,textFiled3.text!].contains($0) }
        return tempArr.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        let tempArr = colorsArray.filter { ![textFiled1.text!,textFiled2.text!,textFiled3.text!].contains($0) }
        return tempArr[row]
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        let tempArr = colorsArray.filter { ![textFiled1.text!,textFiled2.text!,textFiled3.text!].contains($0) }
        self.selectedTextField?.text = tempArr[row]
        pickerView.reloadAllComponents()
    }
    func textFieldDidBeginEditing(_ textField: UITextField) {
        self.selectedTextField = textField
        pickerView.reloadAllComponents() 
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM